在使用IIS 7.0
删除所有标头后,在integrated mode
Response.ClearHeaders()
中,IIS会添加一些其他标头,例如Server
和X-Powered-By
,向黑客显示良好的信息。如何阻止此行为(考虑我仍需要添加自定义标头)?
答案 0 :(得分:67)
您可以将其添加到您的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
来实现。
答案 1 :(得分:13)
在IIS中配置X-Powered-By
。在Windows 7上,具体是:
X-Powered-By
我不确定是什么产生Server
标题。
答案 2 :(得分:5)
对于IIS7 +集成模式,eth0在web.config中有:<customHeaders>
标记。感谢那。至于“服务器”标题,如果使用MVC,您只需添加:
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
}
到Global.asax中的MvcApplication类。否则,您只需添加一个自定义Http模块,处理PreSendRequestHeaders事件,并执行相同的操作。
答案 3 :(得分:2)
以下答案包含一个不需要URLScan或自定义HttpModule的完整解决方案,并删除您提及的所有相关标头。它也适用于Azure。
Removing/Hiding/Disabling excessive HTTP response headers in Azure/IIS7 without UrlScan
答案 4 :(得分:1)
URLScan可用于删除服务器标头,或配置另一个服务器标头http://learn.iis.net/page.aspx/938/urlscan-3-reference/
但它从来没有真正阻止黑客知道你实际使用的是什么。显然有其他方法可以检测您的服务器信息。
答案 5 :(得分:0)
您可以使用appcmd.exe(IIS 7及更高版本)来完成工作。脚本将是这样的:
C:\Windows\System32\inetsrv\appcmd.exe set config -section:system.webserver/httpProtocol /-customHeaders.["name='X-Powered-By'"] /commit:apphost
/commit:apphost
:这会将配置设置提交到ApplicationHost.config文件中的相应位置部分。
我通常会在安装应用程序后在Web服务器上运行所有这些脚本的批处理文件。
对于ASP.NET MVC应用程序,方法不同,您可以参考此处给出的其他答案。
答案 6 :(得分:0)
在这里想补充一点,对于不再有web.config文件的ASP.NET Core版本,必须采用其他方法。
我进行了以下调整,以删除ASP.NET Core 2.1中的标头:
您可以通过替换
来删除x-by-by标头<customHeaders>
<clear />
<add name="X-Powered-By" value="ASP.NET" />
</customHeaders>
使用
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
在项目的.vs \ config文件夹中找到的applicationhost.config文件中的。
可以通过添加
删除服务器头.UseKestrel(c => c.AddServerHeader = false)
在Program.cs文件中。