0

我有一个 ASP.Net MVC 控制器操作,旨在提供对我的 App_Data 文件夹中选择目录和子目录中特定文件的访问权限。

有人会告诉我如何锁定它,以便用户无法访问根目录或父目录,只能访问目录和子目录中的文件吗?

这是控制器操作的不安全版本:

public string GetFile(string fileName)
{
    string dataDir = AppDomain.CurrentDomain.GetData("DataDirectory").ToString();
    string specialFiles = "SpecialFiles";

    string finalPath = Path.Combine(dataDir, specialFiles, fileName);
    string text = System.IO.File.ReadAllText(finalPath);
    return text;
}

天真的解决方案是检查fileName字符串组合,例如..\,然后抛出异常或其他东西。虽然我可以实施此解决方案,但如果存在最佳实践,我更愿意遵循。

4

1 回答 1

1

在将字符串组合成 finalPath 之前,请从fileName以下内容中提取 FileName:

fileName = System.IO.Path.GetFileName(fileName)
于 2013-03-10T06:56:27.650 回答