IIS 7 を使用して URL Rewrite 2.0 でルールを設定する際に問題が発生しています。私は、従来の .ASP にまでさかのぼる、より最新の .NET 4.0 を組み合わせた Web サイトに取り組んでいます。私の現在のタスクは、XSS 攻撃を防ぐために、ユーザー入力からいくつかの特定の文字を削除しようとすることです。
基本的な構文を取得します。
<rule name="Rule Name" stopProcessing="true">
<match url="myPage.asp" />
<conditions>
<add input="" pattern="" />
</conditions>
<action type="" />
</rule>
3 つのステップが必要であることはわかっています。1) 見ているのが投稿であることを確認する 2) 正規表現を使用して多数の不適切な文字を特定する 3) それらの文字を削除して投稿を続行する。
私が信じている最初のものは、これで対処できると思います:
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" />
私を苛立たせているのは、2番目と3番目の問題です。
2 番目も入力ですが、入力に入れるのに最適な {} 変数を見つけようとして行き詰まりました。今私はこれを持っています:
<add input="{REQUEST_URI}" pattern="[\\\|<>]" />
しかし、{REQUEST_URI} がそこに移動するための正しい変数ではないことはわかっています。URL 書き換えサイト (http://www.iis.net/download/urlrewrite) にアクセスして、サーバー変数の IIS 6.0 リスト (http://msdn.microsoft.com/en- us/library/ms524602(v=vs.90).aspx) ですが、7.0 以降で使用できる変数とその意味の適切なリストが見つからないようです。これは誰かがどこかにブックマークして、引き継ぐことができるものですか?
3番目も私に問題を与えています。現在、他のいくつかのルールを<action type="AbortRequest" />
設定していますが、このためにリクエストを停止するつもりはありません。悪い文字を削除して POST を続行するだけです。IIS でのカスタム ルールのセットアップは有望に見えますが、URL にリダイレクトするだけで、他には何もしていないようです。これは可能なことですか?
また、探しているものを取得するための代替手段として、IIS マネージ モジュールを検討していることにも注意してください。それは誰にとってもより良い道のように聞こえますか?