DotNetOpenAuth (OpenID) を使用するサイトを ISA 2006 (リバース プロキシ) の背後でホストしようとしており、プロバイダー (Google など) で認証された後、URL に %253A を含む URL が返されます。ただし、ISA HTTP フィルターは要求を拒否します。
私がする必要があるのは、ISA Web 公開ルールで、右クリック > HTTP ポリシー プロパティの構成 > [正規化の検証] のチェックを外すことです。
- これは一般的に ISA 2006 の問題ですか? 他のファイアウォールにも同様の問題がありますか?
- それとも、OpenID または DotNetOpenAuth の問題ですか?
- ISA で正規化チェックを無効にしても安全ですか?
MSDN によると、「Web サーバーは URL エンコードされたリクエストを受け取ります。これは、特定の文字がパーセント記号 (%) に置き換えられ、その後に特定の数字が続くことを意味します。たとえば、%20 はスペースに対応するため、http://myserver/My%20Dir/My%20File.htmは、 http://myserver/Myに対する要求と同じです。Dir/My File.htm. 正規化は、URL エンコードされた要求をデコードするプロセスです。% は URL エンコードされる可能性があるため、攻撃者は慎重に作成されたリクエストを、基本的に二重にエンコードされたサーバーに送信できます。これが発生した場合、インターネット インフォメーション サービス (IIS) は、そうでなければ無効として拒否する要求を受け入れる場合があります。[Verify Normalization] を選択すると、HTTP フィルタは URL を 2 回正規化します。最初の正規化後の URL が 2 回目の正規化後の URL と異なる場合、フィルターは要求を拒否します。これにより、二重にエンコードされたリクエストに依存する攻撃が防止されます。Verify Normalization 機能を使用することをお勧めしますが、% を含む正当なリクエストもブロックされる可能性があることに注意してください。」