
定義されたリスト以外の URL からのサイトへのアクセスを防ぐための URL 書き換えルールがあります。URL が400 Bad Request
リストにない場合は、ルールが返されます。
<rule name="No unknown hosts" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" />
<add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" />
<add input="{HTTP_HOST}" pattern="^admin\.example\.com$" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="400" />
</rule>
ブロックしようとしているURLの例は、mail.example.com
またはです102.15.63.233
。これはうまく機能します。を除外する隠しセグメントが URL に追加されると、次のようにmail.example.com/bin/
なります。これにより、カスタム 404 エラー ページが表示されますが、URL がブロックされて 400 が返されるため、すべてのスタイル シートとその他のアセット (画像など) が解決されず、見栄えが悪くなります。さらに悪いことに、ディレクトリの参照を許可していると判断されるため、PCI DSS スキャンでエラーが発生します。
ほぼ一日中、思いつく限りのあらゆる方法で Google 検索を試みましたが、成果はありませんでした。ああ、このようにする理由は、無効な HOST ヘッダーを使用して、サイトを悪意のあるサイトにリダイレクトできないようにするためです (他の多くの Rewrite ルールは、この機能に依存しています)。ここで誰かが答えを持っていることを願っています。