无法使用请求过滤删除“服务器”标头

无法使用请求过滤删除“服务器”标头

由于 PCI DSS 扫描限制,我需要从发送到我的 IIS 站点的所有 http 请求中删除“服务器”标头。我正在运行最新版本的 Windows Server 2016,并使用最新版本的 IIS 10。IIS 请求过滤角色安装在角色和功能中。

我的配置文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
  </system.webServer>
</configuration>

我正在提供一个静态文件,为了进行本次测试,它被称为index.html并包含<html></html>

创建配置文件、重新启动 IIS 并请求文件后,IIS 仍在发送服务器标头:

在此处输入图片描述

我知道的唯一其他方法是安装 IIS-rewrite 模块,但这是极其不可取的,因为我们正在运行服务器场,并且这需要对多台服务器和服务器映像进行操作。

我还可以尝试其他什么方法来使请求过滤正常工作吗?

有没有其他方法可以删除不需要 IIS 重写的服务器标头?

PS 我可以通过在 IIS 中创建一个新站点,并创建一个索引文件和一个如上所述的 Web 配置在多台服务器上重现此问题 - 感觉我遗漏了一些明显的东西。

答案1

IIS 10.0 添加了 removeServerHeader 属性来抑制向远程客户端发送 HTTP 服务器标头。

以前的 IIS 版本不支持。

答案2

我在 IIS 10 中删除服务器响应标头时遇到了同样的问题,因为我使用 URL 重写规则对 http 流量发出 302 重定向。所有其他方法都适用于特定网站,但不适用于重定向响应。

要使其正常工作,您需要在服务器级别设置变量。具体操作如下:

  1. 打开IIS,点击服务器节点,即第一个节点。

IIS 服务器节点

  1. 双击配置编辑器

配置编辑器

  1. 将 removeServerHeader 设置为 True

配置编辑器

相关内容