Windows Server IIS喜欢告诉全世界网站在 IIS 上运行。它使用 HTTP 响应中的Server标头执行此操作,如下所示。在这篇文章中,我将向您展示如何在 IIS 中删除响应服务器标头。你不想给黑客太多关于你的服务器的信息,嗯?;-)。
尽管我不是默默无闻的安全爱好者(你是吗?),但安全专家通常建议删除常见的服务器响应标头。攻击者可能会通过查看 Web 服务器返回的响应标头来获得有关您的服务器和网络的大量信息。
因此,建议您至少删除其中一些标头。
但是让我们从正常的 HTTP HEAD 响应的样子开始:
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-UA-Compatible: IE=Edge,chrome=1
Date: Sun, 06 Jul 2014 10:05:34 GMT
Connection: close
在这里,您注意到IIS在标头中显示其版本信息Server
,作为响应:
Server: Microsoft-IIS/8.0
与删除 IIS 中的 ETag 标头一样,您可以使用 URL Rewrite Module outboundRule重写和清空IISServer:
中的HTTP 响应标头。
希望在 IIS (或更多 HTTP 安全标头)上启用 HTTP Strict-Transport-Security (HSTS )?
不幸的是,您不能真正删除 Server 标头。但是您可以重写其内容并将其清空。在IIS 7+(IIS 7、8.5、8.0、8.5、IIS 10.0)上,使用重写 outboundRule从Server:
标头响应中删除 Web 服务器版本信息。
您可以使用以下URL 重写出站规则:
outboundRule 所做的是:它Server:
在输出响应流中查找标头(或 serverVariable),并用空字符串(无)重写该值。
最终结果是一个空的Server:
响应标题行:
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Server:
X-UA-Compatible: IE=Edge,chrome=1
Date: Sun, 06 Jul 2014 10:06:08 GMT
Connection: close
您现在已经成功地Server
从 HTTP 标头中删除了版本响应!
这是特定于网站的规则。如果要为所有应用程序创建规则,则必须在服务器级别创建规则。此外,某些应用程序,尤其是第三方应用程序,可能需要并依赖于 Server 标头。然后,您可能需要为这些应用程序删除此规则。
删除 IIS 中的 ETags HTTP 响应标头
如何在 IIS 上启用 HTTP 严格传输安全 (HSTS)
重写响应头的有趣之处在于您可以显示自己的信息字符串。例如,如果您在 Rewrite 操作中提供一个值,则会显示该消息:
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Server: Saotn Server Software systems, LTD.
X-UA-Compatible: IE=Edge,chrome=1
Date: Sun, 06 Jul 2014 11:19:16 GMT
Connection: close
这不是很有趣,现在是吗?:)
将 .htaccess 转换为 web.config
如何使用 PowerShell 从 Windows Server 中删除 IIS
默认情况下, IIS通过放置X-Powered-By标头来告诉世界它由ASP.NET提供支持:
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Server:
X-Powered-By: ASP.NET
X-UA-Compatible: IE=Edge,chrome=1
Date: Sun, 06 Jul 2014 10:07:37 GMT
Connection: close
可以使用位于web.config
节点中的 customHeaders 设置删除此响应标头
:
现在,X-Powered-By
标头已从响应标头输出中删除
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Server:
X-UA-Compatible: IE=Edge,chrome=1
Date: Sun, 06 Jul 2014 10:10:02 GMT
Connection: close
了解有关各种HTTP 安全标头的更多信息。
X-AspNet-Version
HTTP Header 向全世界广播正在使用的ASP.NET版本。
在应用程序的 web.config 文件中的节点内添加以下内容:
在 IIS 10.0 (Windows Server 2016/2019) 中,您可以通过在system.webServer节点中配置requestFiltering来移除Server标头:web.config
或者在 IIS 管理器的配置编辑器中:
在 IIS 配置管理器 requestFiltering 节点中将 removeServerHeader 设置为 True。
这样您就不必摆弄复杂的出站重写规则。要删除 ASP.NET 的X-Powered-By标头,您仍然需要customHeaders
上面提到的部分。