为什么不能通过IIS7中的web.config删除“服务器”响应标头?

时间:2010-09-09 15:49:46

标签: asp.net iis-7 response-headers

Remove Server Response Header IIS7

我知道如何根据上面的链接使用HTTP模块删除Server响应标头。

我只是想知道为什么必须以这种方式删除它。

6 个答案:

答案 0 :(得分:6)

Aristos link中的评论为“为什么”提供了良好的答案。

归结为MS不想轻易让人们修改这个值。无论是出于营销还是其他目的,都可以进行解释。

从讨论中拿走的一件事是修改服务器头对任何安全性都没有用。有许多方法可以准确地检测出正在运行的Web服务器软件的类型(和版本)。

这使我们只有一个理由:保存字节。除非你正在运行一个极高的流量站点,否则这不是一个问题。如果您正在运行高流量站点,那么您很可能已经在运行一个或多个自定义模块。

答案 1 :(得分:2)

这个例子并没有真正删除“server”标题,只是在其上写了一些东西。

更好的标题是“ IIS7如何发送自定义”服务器“http标头”。阅读此类似文章http://blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx

现在,如果您想知道为什么会这样,这不是唯一的方法,您可以转到您的网络服务器,只是从首字母标题中删除它。

如果您想知道,为什么要使用IHttpModule + PreSendRequestHeader,因为这是您在初始部分抓取标题并在iis执行之前首先放置“server”标题的方式。

希望得到这个帮助。

答案 2 :(得分:1)

您还可以通过在IIS 7 +中的web.config文件中添加outboundRule来清空值:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules rewriteBeforeCache="true">
                <rule name="Remove Server header">
                    <match serverVariable="RESPONSE_Server" pattern=".+" />
                    <action type="Rewrite" value="" />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

答案 3 :(得分:0)

删除这些标题的基本思路如下

  1. 出于安全原因。它不容易被攻击者确定 关于软件(版本)和Web服务器支持该网站。
  2. 它减少了服务器端向浏览器生成的数据大小。
  3. Read more about Inspecting Http Response Headers

答案 4 :(得分:0)

以下内容对我有用:

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

<security>
  <requestFiltering removeServerHeader ="true" />
</security>

这样,您就不必摆弄复杂的出站重写规则。

要删除ASP.NET的X-Powered-By标头,您仍然需要如上所述的customHeaders部分。

来源:https://www.saotn.org/remove-iis-server-version-http-response-header/

答案 5 :(得分:-1)

Response.Headers.Set("Server", "My Awesome Server");在页面代码隐藏中正常工作,只要您的应用程序池设置为“集成管道模式”。

基本上,IPM专门用于将IIS管道与ASP.NET管道集成以允许完成此类操作。请参阅Mehrdad Afshari's Answer进行讨论。