如何修复此代码,使其不指责此类漏洞?
我是用checkmarx扫描的,他下载文件的时候遇到这个问题
checkmarx 报告的错误:
src\BR.Rve.UI.Site\Controllers\DownloadFileController.cs 第 13 行的方法索引从 fileName 元素获取动态数据。然后,该元素的值流经代码,最终在 src\BR.Rve.UI.Site\Controllers\DownloadFileController.cs 第 13 行的 Index 中用于本地磁盘访问的文件路径中使用。这可能会导致路径遍历漏洞。”我在解决这个问题时遇到了一些麻烦
我在解决这个问题时遇到了一些麻烦
我的原始代码:
public FileResult Index(string fileName)
{
string rootPath = System.Configuration.ConfigurationManager.AppSettings.Get("FinalUploadFolder");
byte[] fileBytes = System.IO.File.ReadAllBytes(string.Format("{0}/{1}", rootPath,fileName));
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
我在下面尝试过这个解决方案,但它没有用
private static readonly char[] InvalidFilenameChars = Path.GetInvalidFileNameChars();
public ActionResult Index(string fileName)
{
if (fileName.IndexOfAny(InvalidFilenameChars) >= 0)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
string rootPath = System.Configuration.ConfigurationManager.AppSettings.Get("FinalUploadFolder");
byte[] fileBytes = System.IO.File.ReadAllBytes(Path.Combine(rootPath,fileName))));
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
我可以在代码中做些什么来避免扫描时出现此类问题