最近在看响应头,看到iis站点里面包含了iis信息和开发语言信息,于是查询了此类文章,主要针对结尾文章的翻译,并做了部分删减和图片优化替换。
步骤总览
1.安装URLRewrite(iis官方5M左右)
2.在相应站点的URLRewrite 功能里添加服务器变量(改哪个就设置哪个):
RESPONSE_SERVER(对应Server)
RESPONSE_X-POWERED-BY (对应X-Powered-By)
RESPONSE_X-ASPNET-VERSION(对应X-AspNet-Version)
3.在相应站点的URLRewrite 功能设置出站规则,将原有的Server、X-Powered-By、X-AspNet-Version 替换成其他值或者直接设置为空
tip:响应头X-AspNet-Version的去除,引文其name本身包含aspnet关键字 所以建议使用 webconfig设置 system.web节点下添加
这篇博文的目的是讨论如何从响应中删除不需要的 HTTP 响应标头。 通常,出于安全原因,我们有 3 个响应标头,许多人希望将其删除。
在继续之前,您应该评估是否需要删除这些标题。 如果您因为网站上的安全扫描而决定删除这些标题,您可能需要阅读 David Wang 的以下博客文章。
https://blogs.msdn.com/b/david.wang/archive/2006/03/29/silly-security-scans.aspx
如果您想继续删除标题,请遵循以下选项。
有三种方法可以从响应中删除 Server 标头。 最好的方法是使用第三个选项,本人只尝试了第三种。
1. 使用注册表项 (未尝试)
创建一个名为 DisableServerHeader 在以下注册表项中并且设置值为 1 。
HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
添加注册表项后,使用 net stop http 命令和 net start http 命令重新启动 HTTP 服务。 如果 HTTP 服务未启动,则使用 iisreset 命令。 如果这也不起作用,那么您可以重新启动服务器。
请注意,此方法仅在 Server 标头为“ Microsoft-HTTPAPI/2.0 ”时使用。
当请求到达 IIS 时,它首先到达 http.sys 驱动程序。 HTTP.SYS 驱动程序要么自己处理请求,要么将其发送到用户模式以进行进一步处理。 当请求进入用户模式时,它会将服务器标头返回为“ Microsoft-IIS/7.5.”。
但是,当请求从 HTTP.SYS 驱动程序返回时,服务器标头将显示为“ Microsoft-HTTPAPI/2.0 ”。 通过放置上述注册表项,它将删除此特定标头
如果您想将 Server 标头删除为“ Microsoft-IIS/7.5.”, 请按照以下方法操作。
2. 使用 URLScan 工具(未尝试)
在您的机器上安装 URLScan。 请按照以下链接进行操作
https://www.iis.net/downloads/microsoft/urlscan
安装 URLScan 后,打开通常位于 %WINDIR%\System32\Inetsrv\URLscan 文件夹中的 URLScan.ini 文件。 打开后,搜索键 RemoveServerHeader 。 默认情况下,它设置为 0,但要删除 Server 标头,请将值更改为 1 删除 Server 标头 Server: Microsoft-IIS/7.5 用户模式响应中
请注意,URLScan 在全球范围内所做的更改适用于您的所有站点。 如果您想为特定站点设置此设置,请查看以下文章(站点过滤器部分)
https://www.iis.net/learn/extensions/working-with-urlscan/urlscan-setup
使用 URLScan 也有一些陷阱。 您可以通过以下 URL 了解这些陷阱:
https://msdn.microsoft.com/en-us/library/ff648552.aspx\#ht\_urlscan\_008
如果您不想使用 URLScan,则可以使用 URLRewrite 模块删除 Server 标头的值。 请注意,它不会一起删除标题,但会删除它的值。
步骤 1. 安装 URLRewrite。 要安装 URLRewrite,请转到iis官方链接(下载,安装即可大小5M左右)
https://www.iis.net/downloads/microsoft/url-rewrite
步骤 2. 打开您要删除服务器标头的站点,然后双击 URL重写(URLRewrite ) 部分 。
步骤 3. 单击 右侧 操作窗格的 查看服务器变量(View Server Variables)
步骤 4. 单击添加按钮,然后在提供的文本框中输入“ RESPONSE_SERVER” 。
第 5 步。现在我们需要创建出站规则。 要了解如何创建出站规则,
添加规则(Add Rule) - 选择出站规则(Outbound rules)栏的空白规则(Blank rule)
更多进出站规则设置参考链接
https://www.iis.net/learn/extensions/url-rewrite-module/creating-outbound-rules-for-url-rewrite-module
步骤 7. 编辑出站规则如下。
名称:Remove Server 变量名称:RESPONSE_SERVER 其他按图填写
请注意,这是特定于网站的规则。 如果要为所有应用程序创建规则,请在服务器级别创建规则。 此外,某些应用程序,尤其是第三方应用程序,可能需要 Server 标头,因此您可能需要为这些应用程序删除此规则。
也有两种方法可以删除此标头。
1. 使用 IIS HTTP 响应标头。
打开您要打开的站点,然后单击 HTTP 响应标头(HTTP Response Headers)选项。
单击 X-Powered-By 标题,然后单击操作窗格上的删除以将其从响应中删除,当然也可以编辑成其他的
2. 使用 URLRewite 规则(见 Server 响应头处理)
请注意,它不会一起删除标题,但会删除它的值。
同 Server 头处理相同,两个点不同
1.建立的服务器变量(View Server Variables)名称为 RESPONSE_X-POWERED-BY
2.创建出站规则页面的变量名称(Variables Name)填写 同步为 RESPONSE_X-POWERED-BY
也有两种方法可以删除此标头。 首选的是第一个。
1. 使用 httpRuntime 元素。
在 web.config 中添加以下行
2. 使用 URLRewite 规则 。
同 Server 头处理相同,两个点不同
1.建立的服务器变量(View Server Variables)名称为 RESPONSE_X-ASPNET-VERSION
2.创建出站规则页面的变量名称(Variables Name)填写 同步为 RESPONSE_X-ASPNET-VERSION
本篇博文有国外翻译而来,部分图片为实践图片修改,原文地址:Remove Unwanted HTTP Response Headers | Microsoft Docs