0

我已经尝试过这些解决方案

我的代码是否会阻止 C# 中的目录遍历?

我的以下代码中是否可能存在路径遍历漏洞?

如何防止 .NET 中的路径遍历

如何在我的代码中避免目录遍历

但是,Checkmarx 扫描仍然存在安全问题,下面是代码

public FileContentResult GetImageFromFilePath(string filePath)
        {
            byte[] image = null;
            if (!string.IsNullOrEmpty(filePath))
            {
                image = System.IO.File.ReadAllBytes(filePath);
            }
            if (image == null)
                return null;
            return File(image, "image/jpeg");
        }

问题出在这行代码上image = System.IO.File.ReadAllBytes(filePath);

请让我知道如何解决此安全问题。

提前致谢。

4

1 回答 1

1

路径遍历是关于你从用户输入构建路径,主要是你对用户输入有一个假设,例如,用户给你yearindex,你返回正确的图像:$"App/Photos/${year}/${index}.png"

遍历就是用户给你一个相对的部分,比如for-,这样year路径../private就会是App/private/1.png.

要清理此示例(并且您需要考虑更多案例,并且不要做出任何假设),您需要使用filePath.Replace("..", ""). 在使用filePath访问文件系统之前。

于 2021-03-31T12:33:17.450 回答