保护http标头

时间:2013-09-03 05:35:50

标签: asp.net http-headers

我的网站位于生产服务器中,它应该非常安全,所以我想保护http标头,以免泄露不需要的信息。

我在网上搜索了关于保护http标头的内容,到目前为止我们发现我们可以删除未删除的信息,例如删除

'Server Microsoft-IIS/7.5
X-AspNet-Version 4.0.303319
X-Powered-By ASP.NET -'

我找到了X-Aspnet和X的解决方案: 1.对于X-AspNet,我在system.web部分中添加了以下代码

<httpRuntime enableVersionHeader="false"/>
  1. 对于X-Powered,我在system.webserver部分添加了以下代码

                               

  2. 但是对于Server标头删除代码不起作用:(

    我正在使用的代码是:

    1. 我添加了一个名为CustomHeaderModule的类,里面的类代码如下所示

      /// /// CustomHeaderModule的摘要描述 /// 公共类CustomHeaderModule:IHttpModule {

      public void Dispose()
      {
          throw new NotImplementedException();
      }
      
      public void Init(HttpApplication context)
      {
          context.PostReleaseRequestState += PostReleaseRequestState;
      }
      
      void PostReleaseRequestState(object sender, EventArgs e)
      {
          //HttpContext.Current.Response.Headers.Remove("Server");
          // Or you can set something funny
          HttpContext.Current.Response.Headers.Set("Server", "CERN httpd");
      }
      

      }

    2. 然后在system.webserver部分

      下的web.config中注册
      <modules runAllManagedModulesForAllRequests="true">
            <add name="CustomHeaderModule" type="CustomHeaderModule" />
          </modules>
      

      现在这段代码无效..我仍然在Chrome浏览器的标题中看到服务器..

      我怎么能解决这个问题,除了这3个设置还有其他什么可以保障更多?

3 个答案:

答案 0 :(得分:4)

考虑到您的问题,我建议您使用ASafaWeb来测试您的网站!

其次是阅读Troy Hunt和Paul Bouwer的这些文章:

在这篇文章之后,您将看到NWebSec

答案 1 :(得分:1)

很抱歉,如果这不能直接回答您的问题,但我不会真的费心去除这些标题。有人可以通过查看浏览器端的html代码轻松找出您使用的服务器。

如果我查看源代码,我会看到像__VIEWSTATE这样的东西,我会马上知道这是ASP.NET,如果我深入挖掘一下,我也可以找出版本。

我建议您专注于标准的安全和风险程序,例如确保您不会接受SQL注入,验证服务器端的所有内容,确保您已准备好所有备份并准备好了在几分钟内,如果需要,添加额外的身份验证层,确保您在服务器上拥有所有安全更新等...

答案 2 :(得分:0)

我找到了一个适用于IIS但不适用于本地的解决方案,但我对此感到满意...... Removing/Hiding/Disabling excessive HTTP response headers in Azure/IIS7 without UrlScan

除了这3个设置之外..还有其他方式我可以更安全的http标题..