Os segmentos ocultos do IIS 10 vão para a página 404 em vez de 400, que estou definindo na regra de reescrita de URL

Os segmentos ocultos do IIS 10 vão para a página 404 em vez de 400, que estou definindo na regra de reescrita de URL

Eu tenho uma regra de reescrita de URL para impedir o acesso ao site a partir de qualquer URL, exceto uma lista definida. A regra retorna 400 Bad Requestse o URL não estiver na lista.

    <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>

Exemplos de URLs que estou tentando bloquear são mail.example.comou 102.15.63.233. Isso funciona muito bem,excetoquando um segmento oculto é anexado ao URL, assim mail.example.com/bin/. Isso vai para minha página de erro 404 personalizada, que entre outras coisas parece uma porcaria porque todas as folhas de estilo e outros ativos (imagens, etc.) não serão resolvidos, pois o URL está bloqueado e retornando 400. Pior que isso, ele aciona um erro nas verificações do PCI DSS porque eles acham que estou permitindo a navegação no diretório.

Passei quase o dia inteiro fazendo pesquisas no Google de todas as maneiras possíveis, sem sucesso. Ah, a razão para fazer isso dessa maneira é que um cabeçalho HOST inválido não pode ser usado para enganar nosso site e redirecioná-lo para um site malicioso (muitas outras regras de reescrita dependem dessa funcionalidade). Espero que alguém aqui tenha uma resposta.

informação relacionada