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

Xaq*_*ron 38 asp.net iis http-headers

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

eth*_*th0 71

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

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <remove name="X-Powered-By" />
        </customHeaders>
    </httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

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

  • 在IIS 10.0(和Azure Web Apps)中,您还可以使用`<system.webServer> <security> <requestFiltering removeServerHeader ="true"> </ requestFiltering> </ security> </ system来删除`Server`标头. web服务器>`. (6认同)

Sam*_*eff 13

X-Powered-By配置IIS内.在Windows 7上,它具体是:

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

我不确定是什么产生了Server标题.


rea*_*520 5

对于IIS7 +集成模​​式,eth0具有:<customHeaders>web.config中的标记.感谢那.对于"Server"标头,如果使用MVC,您只需添加:

    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
    }
Run Code Online (Sandbox Code Playgroud)

到Global.asax中的MvcApplication类.否则,您只需添加一个自定义Http模块,处理PreSendRequestHeaders事件,并执行相同的操作.

  • PreSendRequestHeaders不是托管管道的一部分,可以产生奇怪的结果,如冻结的异步请求.http://www.asp.net/aspnet/overview/web-development-best-practices/what-not-to-do-in-aspnet-and-what-to-do-instead#presend. (2认同)

Spr*_*ter 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>
Run Code Online (Sandbox Code Playgroud)

<customHeaders>
        <remove name="X-Powered-By" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)

在项目的 .vs\config 文件夹中找到的 applicationhost.config 文件中。

服务器标头可以通过添加来删除

.UseKestrel(c => c.AddServerHeader = false)
Run Code Online (Sandbox Code Playgroud)

在 Program.cs 文件中。