ディレクトリトラバーサル攻撃を阻止するための検証用の正規表現を作成しようとしています。私はユーザーがC:\ tempディレクトリ内の何かを指定できるようにしたい。したがって、以下は細かいことです。REGEXでディレクトリトラバーサルを停止する
c:\temp\hello\world.txt
しかし、明らかに、以下のディレクトリは受け入れられません。
c:\temp\..\Windows\world.txt
私の問題は、どのようにして1つのピリオド(。)を使用できるかわかりませんが、2つではありません。私はエクステンションのために明らかに1つ(world.txt)が必要ですが、2つを持つことはできません。 [^ \ \。]
^([c]:\\)\\?(temp)([^(\.\.)]){0,200}$
は、だから私はない二つの期間を言うしようとしていますし、\\:これは私がこれまで持っているものでしょうか?それはエスケープされたディレクトリも受け入れるからです。前もって感謝します。
に0から任意の文字に一致しますか? –
ディレクトリの検証について他にどのように進むべきかについてはあまりよく分かりません。 C#コードビハインドのaspxアプリケーションです。私は、より良い方法があればそれを開いています。 – meowcat
https://stackoverflow.com/questions/401304/how-does-one-extract-each-folder-name-from-a-path –