在
IIS 7.0
integrated mode
删除所有带有 Response.ClearHeaders()
的标头后,IIS 会添加一些其他标头,如 Server
和 X-Powered-By
,这向黑客透露了有用的信息。我怎样才能停止这种行为(考虑到我仍然需要添加自定义标头)?
您可以将其添加到您的 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
来完成的。
X-Powered-By
在 IIS 中配置。在 Windows 7 上,具体是:
X-Powered-By
我不确定是什么生成了
Server
标头。
对于 IIS7+ 集成模式,eth0 有:web.config 中的
<customHeaders>
标签。感谢那。至于“Server”头,如果使用MVC,你可以简单地添加:
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
}
到 Global.asax 中的 MvcApplication 类。否则,您可以简单地添加自定义 Http 模块,处理 PreSendRequestHeaders 事件,并执行相同的操作。
更新:不推荐这样做,请参阅评论。
想在此处添加一点,对于不再有 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