如何保护控制器不受用户输入的影响访问父目录和根目录
本文关键字:访问 影响 根目录 输入 用户 何保护 保护 控制器 | 更新日期: 2023-09-27 18:03:14
我有一个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
是否有类似..'
的字符串组合,然后抛出异常或其他什么。虽然我可以实现这个解决方案,但如果存在最佳实践,我更愿意遵循最佳实践。
在将字符串组合成finalPath之前,从fileName
中提取FileName,如下所示:
fileName = System.IO.Path.GetFileName(fileName)