2010-11-02 50 views
28

IIS 7.0integrated mode删除所有标头后用Response.ClearHeaders() IIS会添加一些其他标头,如ServerX-Powered-By,这些标头向黑客揭示了良好的信息。我怎样才能阻止这种行为(考虑我仍然需要添加我的自定义标题)?如何从响应中删除IIS自定义标题,如X-Powered-By:ASP.NET?

+0

可能重复(http://stackoverflow.com/questions/12803972/removing-hiding-disabling-excessive-http -response-headers-in-azure-iis7-without) – CrazyPyro 2015-03-16 17:34:22

+0

我知道这个问题首先被问到,但其他问题现在更完整并且是最新的。 – CrazyPyro 2015-03-16 17:35:13

回答

11

X-Powered-By在IIS中配置。在Windows 7很明确:

  1. IIS管理器
  2. 计算机名>站点>默认Web站点
  3. HTTP Respons头
  4. 删除X-Powered-By

我不知道是什么产生Server标题虽然。

+1

谢谢。至少有50%的进展。如果可能的话,我更喜欢asp.net内部的一般方法。 – Xaqron 2010-11-02 15:11:16

+0

@Xaqron,你可以通过编程获得设置,但我不知道该如何。抱歉。 – 2010-11-02 15:12:50

1

URLScan的可以用来删除服务器头,或配置其他服务器头,http://learn.iis.net/page.aspx/938/urlscan-3-reference/

但它从来没有真正防止黑客知道你其实用什么。显然还有其他方法来检测您的服务器信息。

+0

谢谢。应该有一些内置的配置部分或在最坏的情况下注册表操作,而不是安装一个组件,它的主要目的不是删除SERVER头文件。 – Xaqron 2010-11-20 14:18:03

+0

我已经说过,不是每个人都认为显示服务器头是坏的。那么,为什么只有少数人使用它,为什么要这样呢? – 2010-11-27 02:55:04

54

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

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

更新:如果你使用MVC框架我也建议去除X-AspNetMvc-VersionX-AspNet-Version头为好。这是通过分别在您的Web.config中的Global.asax文件和<system.web><httpRuntime enableVersionHeader="false" /></system.web>中设置MvcHandler.DisableMvcResponseHeader = true来完成的。

+3

在IIS 10中。0(和Azure Web Apps),您还可以通过'来摆脱'Server'标头。 – 2016-12-04 23:38:58

5

对于IIS7 +集成模​​式,eth0具有它:web.config中的<customHeaders>标记。感谢那。至于“服务器”头,如果使用MVC,你可以简单地添加:

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

在Global.asax中的MvcApplication类。否则,你可以简单地添加一个自定义的Http模块,处理PreSendRequestHeaders事件,并做同样的事情。

+2

PreSendRequestHeaders不是托管管道的一部分,可能会产生类似冻结异步请求的奇怪结果。 http://www.asp.net/aspnet/overview/web-development-best-practices/what-not-to-do-in-aspnet-and-what-to-do-instead#presend。 – 2016-06-10 19:51:58

相关问题