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

时间:2010-11-02 14:41:13

标签: asp.net iis http-headers

在使用IIS 7.0删除所有标头后,在integrated mode Response.ClearHeaders()中,IIS会添加一些其他标头,例如ServerX-Powered-By,向黑客显示良好的信息。如何阻止此行为(考虑我仍需要添加自定义标头)?

7 个答案:

答案 0 :(得分:67)

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

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

更新:如果您正在使用MVC框架,我还建议您删除X-AspNetMvc-VersionX-AspNet-Version标头。这可以通过在MvcHandler.DisableMvcResponseHeader = true文件中设置Global.asax并在<system.web><httpRuntime enableVersionHeader="false" /></system.web>中设置Web.config来实现。

答案 1 :(得分:13)

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

  1. IIS管理器
  2. 计算机名称&gt;网站&gt;默认网站
  3. HTTP响应标头
  4. 删除X-Powered-By
  5. 我不确定是什么产生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文件中。