fre*_*hbm 3 c# asp.net security veracode
我有这个代码将文件存储到服务器:
function void StoreFile(string inputFileName) {
...
var extension = Path.GetExtension(inputFileName);
if(extension == ".csv") {
var fileName = string.Format("{0}_{1}{2}", Session.SessionID, new Guid(), extension);
var dataFileServerPath = _documentService.getPath(fileName, UserProfile.UserName, UserProfile.SourceID);
if(!string.IsNullOrEmpty(dataFileServerPath)) {
try {
using(FileStream dataFile = new FileStream(dataFileServerPath, FileMode.Create)) { .... }
}
cathc(Exception e) { ... }
}
}
else {
throw new NotSupportedFormatError();
}
}
Run Code Online (Sandbox Code Playgroud)
Aftrer Veracode分析我在线获取目录遍历问题 FileStream dataFile = new FileStream(dataFileServerPath, FileMode.Create)
为什么我在那里遇到这个问题,我已检查文件扩展名是否对我的案例有效并在fileName中传递该值.这是安全问题以及如何解决这个问题?
_documentService.getPath 只需为特定用户的web.config和filename附加路径,它与用户输入无关.
根据你在这里发布的代码,这看起来像是误报.
Veracode显然正在跟踪inputFileName变量(我假设它包含未经验证的用户输入),并指出它会影响extension变量.由于您后来extension直接嵌入文件名,并读取指向的文件,Veracode发现恶意用户可能会在inputFileName中嵌入部分路径,然后更改目标文件的目录...
在这种情况下,Veracode错过了您已经执行输入验证(extension == ".csv"检查)的事实,并且绝对将输入的相关部分限制为紧密白名单.
假设您的问题中没有其他相关的代码缺失,那么将其标记为误报是安全的.
| 归档时间: |
|
| 查看次数: |
3739 次 |
| 最近记录: |