3

我有一个在生产服务器中的网站,它应该非常安全,所以我想保护 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 部分添加了以下代码

但是对于服务器标头删除代码不起作用:(

我使用的代码是:

  1. 我添加了一个名为 CustomHeaderModule 的类,该类代码如下

    /// /// CustomHeaderModule 的摘要描述 /// public class 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");
    }
    

    }

然后在 system.webserver 部分下的 web.config 中注册它

<modules runAllManagedModulesForAllRequests="true">
      <add name="CustomHeaderModule" type="CustomHeaderModule" />
    </modules>

现在这段代码不起作用..我仍然在 chrome 浏览器的标题中看到服务器..

我该如何解决这个问题,除了这 3 个设置之外,还有其他更安全的设置吗?

4

3 回答 3

4

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

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

在这篇文章之后,您将最终了解NWebSec

于 2013-09-03T11:30:17.627 回答
1

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

如果我查看源代码并看到像 __VIEWSTATE 这样的东西,我会立即知道这是 ASP.NET,如果我再深入一点,我可能也能找出版本。

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

于 2013-09-04T13:10:39.640 回答
0

我找到了一种适用于 IIS 但不适用于本地的解决方案,但我对此没意见...在没有 UrlScan 的情况下删除/隐藏/禁用 Azure/IIS7 中过多的 HTTP 响应标头

无论如何,除了这 3 个设置..还有其他方法可以让我更安全的 http 标头..

于 2013-09-03T11:01:44.587 回答