IIS 10 隐藏段转到 404 页面,而不是我在 URL 重写规则中设置的 400 页面

IIS 10 隐藏段转到 404 页面,而不是我在 URL 重写规则中设置的 400 页面

我有一个 URL 重写规则,用于阻止从除已定义列表之外的任何 URL 访问网站。400 Bad Request如果 URL 不在列表中,则该规则返回。

    <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.com102.15.63.233。这个很有效,除了当隐藏段附加到 URL 时,就像这样mail.example.com/bin/。这会转到我自定义的 404 错误页面,除其他内容外,该页面看起来很糟糕,因为所有样式表和其他资产(图像等)都无法解析,因为 URL 被阻止并返回 400。更糟糕的是,它会在 PCI DSS 扫描中触发错误,因为他们认为我允许目录浏览。

我几乎花了一整天的时间在 Google 上搜索我能想到的所有可能的方法,但都无功而返。哦,这样做的原因是无效的 HOST 标头不能被用来欺骗我们的网站重定向到恶意网站(许多其他重写规则都依赖于此功能)。我希望这里有人能给出答案。

相关内容