一般的に「Path Manipulation」の問題が分析ソフトウェアから発生する場合は、ユーザーが自分の希望する経路を選択できないようにするための唯一の解決策と思われます。パス操作ソリューション?
私はこれらの攻撃から保護するためにいくつかの検証を行うこの簡単な方法を生成しました。
private const string directory = "Windows";
private static readonly string[] extensions = {".pdf", ".txt"};
string userInput = @"..\windows\..\krnl386.exe";
private static bool Validate(string filePath)
{
if (string.IsNullOrEmpty(filePath))
{
return false;
}
if (filePath.ToUpper().Contains(directory.ToUpper()))
{
return false;
}
string ext = Path.GetExtension(filePath);
for (int x = 0; x < extensions.Length; x++)
{
if (ext.Equals(extensions[x]))
{
return true;
}
}
return false;
}
は現在、これらの2つのチェックは、「パス操作」のいずれかの種類を防ぐのに役立つでしょうか?この方法ではの穴にと表示されますか?これが適用されるアプリケーションは、Windowsディレクトリへのアクセスを必要とせず、.pdf
または.txt
以上のファイル拡張子を使用することもありません。
エクステンションを大文字と小文字を区別しないようにしておくとよいでしょう。私は "MyWindowsStuff"についてあなたの意見を見ていますが、それはまれなケースであり、そうしたまれなケースに合わせなければならないとは思わないでしょう。うーん..短い名前については決して考えなかったし、それを比較することもできる。 –
@ programmer117: "windows"チェックに関する私の更新を参照してください。 –
素晴らしい!これはもっとうまくいくでしょう。あなたの言ってる事がわかります。助けてくれてありがとう! –