如何删除 IIS/ASP.NET 响应标头

如何删除 IIS/ASP.NET 响应标头

我有几台 IIS/6.0 服务器,安全部门要求我删除一些响应标头,这些响应标头会根据请求发送到客户端浏览器。他们担心通过响应标头泄露平台信息。我已从网站的 IIS 配置中删除了所有 HTTP-HEADERS(X-Powered-By 或类似标头)。

(我个人确实知道这些信息很容易被发现,即使它是隐藏的,但这不是我的选择。)

我想要删除的标题:

  • 服务器- Microsoft-IIS/6.0
  • X-AspNet 版本- 2.0.50727

我也知道 ASP.NET MVC 也会发出自己的标头,如果您知道如何删除它,那将会很有帮助。

  • X-AspNetMvc 版本- 1.0

答案1

您的安全部门希望您这样做,以使服务器类型更难识别。这可能会减少自动黑客工具的攻击,并使人们更难侵入服务器。

在 IIS 中,打开网站属性,然后转到 HTTP 标头选项卡。大多数 X- 标头都可以在这里找到并删除。这可以针对单个网站或整个服务器执行(修改树中网站对象的属性)。

对于服务器标头,在 IIS6 上,您可以使用 Microsoft 的URL扫描远程工具。Port 80 Software 还生产了一款名为服务器掩码它将帮您解决这些以及更多问题。

对于 IIS7 (及更高版本),您可以使用URL 重写模块重写服务器标头或清空其值。在 web.config(在站点或整个服务器上)中,安装 URL 重写模块后添加此内容:

<rewrite>    
  <outboundRules rewriteBeforeCache="true">
    <rule name="Remove Server header">
      <match serverVariable="RESPONSE_Server" pattern=".+" />
      <action type="Rewrite" value="" />
    </rule>
  </outboundRules>
</rewrite>

如果需要,您可以向重写操作中输入自定义值。此示例源自本文其中还包含其他重要信息。

对于 MVC 标头,在 Global.asax 中:

MvcHandler.DisableMvcResponseHeader = true;

于 2019 年 11 月 12 日编辑以更新 IIS7 信息,因为 TechNet 博客链接不再有效。

答案2

要删除所有泄露过多信息的自定义标头 - 不幸的是,对于 IIS 7,方法有所不同:

标头名称: X-Powered-By

添加:

<httpProtocol>
  <customHeaders>
    <remove name="X-Powered-By" />
  </customHeaders>
</httpProtocol>

<system.webServer>部分中。

标头名称:服务器

通过从 PreSendRequestHeaders 事件调用 Response.Headers.Remove("Server") 来实现一个 httpModule,以删除此标头。另一个资源:在 IIS 7 上隐藏你的 ASP.NET MVC Web 应用程序

标头名称:X-AspNet 版本

在 web.config 的 httpRuntime 部分中 - 设置:

<httpRuntime enableVersionHeader="false" />

标头名称:X-AspNetMvc 版本

从 global.asax 中的 Application_Start 事件 - 执行以下代码(C#):

MvcHandler.DisableMvcResponseHeader = true;

答案3

将其放入 ASP.NET 应用程序的 web.config 文件中将会删除 X-AspNet-Version 标头:

<system.web>
<httpRuntime enableVersionHeader="false" />
</system.web>

请注意,system.web 标记应该已存在于文件中。不要创建重复项,只需添加 httpRuntime 标记即可。httpRuntime 标记可能也已存在。如果是这样,只需添加属性或设置其值(如果已存在)。

答案4

我使用以下代码并适用于 iis 7.5

protected void Application_PreSendRequestHeaders()
{
    Response.Headers.Remove("Server");
    Response.Headers.Remove("X-AspNet-Version");
    Response.Headers.Remove("X-AspNetMvc-Version");
}

相关内容