删除 Windows Server IIS 10 和 ASP.NET 中的 HTTP 响应标头

Windows Server IIS喜欢告诉全世界网站在 IIS 上运行。它使用 HTTP 响应中的Server标头执行此操作,如下所示。在这篇文章中,我将向您展示如何在 IIS 中删除响应服务器标头。你不想给黑客太多关于你的服务器的信息,嗯?;-)。

正常的 HTTP 响应标头

删除 Windows Server IIS 10 和 ASP.NET 中的 HTTP 响应标头_第1张图片

微软互联网信息服务

尽管我不是默默无闻的安全爱好者(你是吗?),但安全专家通常建议删除常见的服务器响应标头。攻击者可能会通过查看 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 )?

使用 outboundRule URL 重写规则删除服务器响应标头

不幸的是,您不能真正删除 Server 标头。但是您可以重写其内容并将其清空。在IIS 7+(IIS 7、8.5、8.0、8.5、IIS 10.0)上,使用重写 outboundRuleServer: 标头响应中删除 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)

用您自己的服务器信息重写“服务器:Microsoft-IIS/8.0”——只是为了好玩

重写响应头的有趣之处在于您可以显示自己的信息字符串。例如,如果您在 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

使用 web.config customHeaders 删除 IIS 中的 ASP.NET X-Powered-By 标头

默认情况下, 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 标头

X-AspNet-VersionHTTP Header 向全世界广播正在使用的ASP.NET版本。在应用程序的 web.config 文件中的节点内添加以下内容:

IIS 10.0 中的 removeServerHeader requestFiltering

在 IIS 10.0 (Windows Server 2016/2019) 中,您可以通过在system.webServer节点中配置requestFiltering来移除Server标头:web.config


  

或者在 IIS 管理器的配置编辑器中:

删除 Windows Server IIS 10 和 ASP.NET 中的 HTTP 响应标头_第2张图片

在 IIS 配置管理器 requestFiltering 节点中将 removeServerHeader 设置为 True。

这样您就不必摆弄复杂的出站重写规则。要删除 ASP.NET 的X-Powered-By标头,您仍然需要customHeaders上面提到的部分。

你可能感兴趣的:(服务器,http,运维)