0

如何修复此代码,使其不指责此类漏洞?

我是用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);
        }

我可以在代码中做些什么来避免扫描时出现此类问题

4

0 回答 0