如何从响应中删除 IIS 自定义标头,例如 X-Powered-By: ASP.NET?

问题描述 投票:0回答:4

IIS 7.0
integrated mode
删除所有带有
Response.ClearHeaders()
的标头后,IIS 会添加一些其他标头,如
Server
X-Powered-By
,这向黑客透露了有用的信息。我怎样才能停止这种行为(考虑到我仍然需要添加自定义标头)?

asp.net iis http-headers
4个回答
94
投票

您可以将其添加到您的 Web.Config 中:

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

更新:如果您使用 MVC 框架,我还建议删除

X-AspNetMvc-Version
X-AspNet-Version
标头。这是通过分别在
MvcHandler.DisableMvcResponseHeader = true
文件中设置
Global.asax
<system.web><httpRuntime enableVersionHeader="false" /></system.web>
中设置
Web.config
来完成的。


14
投票

X-Powered-By
在 IIS 中配置。在 Windows 7 上,具体是:

  1. IIS 管理器
  2. 计算机名称 > 站点 > 默认网站
  3. HTTP 响应标头
  4. 删除
    X-Powered-By

我不确定是什么生成了

Server
标头。


6
投票

对于 IIS7+ 集成模式,eth0 有:web.config 中的

<customHeaders>
标签。感谢那。至于“Server”头,如果使用MVC,你可以简单地添加:

    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
    }

到 Global.asax 中的 MvcApplication 类。否则,您可以简单地添加自定义 Http 模块,处理 PreSendRequestHeaders 事件,并执行相同的操作。

更新:不推荐这样做,请参阅评论。


5
投票

想在此处添加一点,对于不再有 web.config 文件的 ASP.NET Core 版本,需要采用不同的方法。

我进行了以下调整以删除 ASP.NET Core 2.1 中的标头:

您可以通过替换

来删除 x-powered-by 标头
<customHeaders>
        <clear />
        <add name="X-Powered-By" value="ASP.NET" />
</customHeaders>

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

在applicationhost.config文件中找到.v

© www.soinside.com 2019 - 2024. All rights reserved.