App_Dataフォルダー内の選択したディレクトリおよびサブディレクトリ内の特定のファイルにアクセスできるように設計されたASP.NetMVCコントローラーアクションがあります。
ユーザーがルートディレクトリまたは親ディレクトリにアクセスできず、ディレクトリとサブディレクトリ内のファイルにのみアクセスできるように、これをロックする方法を教えてもらえますか?
コントローラーアクションの安全でないバージョンは次のとおりです。
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
単純な解決策は、のような文字列の組み合わせをチェックしてから..\
、例外などをスローすることです。このソリューションを実装することはできますが、ベストプラクティスが存在する場合はそれに従うことをお勧めします。