删除服务器响应标头IIS 8.0 / 8.5

时间:2014-03-14 09:41:00

标签: iis http-headers httpresponse

如何在IIS 8.0 / 8.5中删除服务器标头响应?
我当前的服务器报告: Microsoft-IIS/8.0 Microsoft-IIS/8.5
对于IIS 7.0,我使用了URLScan 3.1但是只支持IIS 7.0而不支持8.x

8 个答案:

答案 0 :(得分:17)

还有另一种解决方案,在我看来,这种解决方案是最好和最安全的。

您可以使用Microsoft创建的 UrlRewrite模块。 Url Rewrite模块会重定向您的网址,还可以在响应标头中更改您的IIS服务器名称。

您不必使用重定向属性。您只需更改Server标头值即可。

以下是步骤:

  1. 首先,从此链接下载UrlRewrite模块: http://www.iis.net/downloads/microsoft/url-rewrite并安装 它在您的IIS服务器上。之后,在cmd上通过此命令重新启动IIS 控制台

    iisreset /restart
    
  2. 将以下项目添加到<system.WebServer>标记下的网络配置文件中。您可以将任何值写入服务器名称。

    enter image description here

  3. 最后,我们更改了数据标题上的IIS版本名称。再次重新启动IIS。通过cmd控制台。

  4. 奖励:如果你想测试你的网站是否有效......你可以使用“HttpRequester”mozilla firefox插件。对于此插件:https://addons.mozilla.org/En-us/firefox/addon/httprequester/

  5. PS:我测试了它,它在IIS服务器上为我工作。不是由Visual Studio创建的temproray IIS服务器。

答案 1 :(得分:9)

不幸的是,您可以在线找到大多数建议,以删除&#34;服务器&#34; IIS中的标头不适用于IIS 8.0和8.5。我发现唯一的工作选项,在我看来,也是最好的,是使用IIS Native-Code模块。

Native-Code模块与更常见的Managed模块不同,因为它们是使用win32 API而不是ASP.NET编写的。这意味着它们适用于所有请求(包括静态页面和图像),而不仅仅是通过ASP.NET管道传递的请求。使用Native-Code模块,可以在请求的最后删除不需要的标头,这意味着您可以删除标头(包括&#34; Server&#34;标头),无论它们在何处设置。

以下文章中提供了用于将IIS 7.0中的标头删除的示例Native-Code模块的二进制文件和源代码。

http://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85

答案 2 :(得分:3)

只需在web.config中的自定义标头段中使用clear标记:

<system.webServer>
   <httpProtocol>
      <customHeaders>
           <clear />
            <add name="X-Custom-Name1" value="MyCustomValue1" />
            <add name="X-Custom-Name2" value="MyCustomValue2" />
      </customHeaders>
   </httpProtocol>
</system.webServer>

对于动态标头,您可以在Global.ascx中使用此代码:

protected void Application_PreSendRequestHeaders() 
   {
       Response.Headers.Remove("Server");
       Response.AddHeader("Sample1", "Value1");
   }

答案 3 :(得分:1)

这很简单。只需创建一个自定义模块:

public class HeaderStripModule : IHttpModule
{
    public void Init(HttpApplication application)
    {
        application.PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
    }

    public void Dispose(){}
}

如果您希望机器范围实施,请在web.configapplicationHost.config注册。

<system.webServer>
  <modules>
      <add name="HeaderStripModule" type="MyNamespace.HeaderStripModule" />
  </modules>
</system.webServer>

答案 4 :(得分:1)

对于上述问题,请在Global.asax.cs

中添加以下代码
protected void Application_PreSendRequestHeaders() 
   {
       Response.Headers.Remove("Server");
       Response.AddHeader("Sample1", "Value1");
   }

经过这么多浏览后问题得到解决。

答案 5 :(得分:0)

从IIS 7.5开始,已停止使用URLScan,因为它的功能应该通过“请求过滤”选项(IIS 7.5中添加的功能)提供。

但是,URLScan的“删除服务器标头”选项看起来不像“请求过滤”中的任何等效项。

正如this answerthis answer to you question所述,您可以使用URLRewrite清空Server,这仍然可以在IIS 8 / 8.5上使用(在IIS中使用其UI时需要进行一些更新)管理控制台)。

结果是this blog,如果缺少官方支持不是问题,那么仍然可以在IIS 8 / 8.5上安装URLScan。

我没有测试过自己。以下是步骤:

  • 安装IIS 6 Metabase兼容性(如果尚未安装)
  • 安装Isapi过滤器(如果尚未安装)
  • 安装URLScan(来自可下载的安装程序,而不是来自Web平台安装程序)
  • 通过其ini文件(默认情况下在C:\Windows\System32\inetsrv\urlscan
  • 中配置URLScan

也许应该完成一些iisreset甚至重启。在Isapi过滤器中的IIS中可以看到URLScan

答案 6 :(得分:0)

现在可以从IIS 10.0开始从Server删除web.config标头:

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

有关如何删除所有不需要的/不必要的标题的更多详细信息,请参见here

请注意,这与所有其他方法一样,都对“应用程序”隐藏了服务器头。如果您例如到达某些默认页面或由IIS本身或应用程序外部的ASP.NET生成的错误页面,这些规则将不适用。因此,理想情况下,它们应该位于IIS的根级别,并且该底线可能会对IIS本身留下一些错误响应。

IIS 10中有一个bug,即使使用config,它有时也会显示标题。现在应该修复它,但是必须更新IIS / Windows。

答案 7 :(得分:-2)

在IIS管理器中,在服务器级别,转到“功能”视图。单击HTTP响应标头。您可以在那里添加/删除标题。您还可以在站点级别管理响应标头。