我的网站位于生产服务器中,它应该非常安全,所以我想保护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"/>
对于X-Powered,我在system.webserver部分添加了以下代码
但是对于Server标头删除代码不起作用:(
我正在使用的代码是:
我添加了一个名为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");
}
}
然后在system.webserver部分
下的web.config中注册<modules runAllManagedModulesForAllRequests="true">
<add name="CustomHeaderModule" type="CustomHeaderModule" />
</modules>
现在这段代码无效..我仍然在Chrome浏览器的标题中看到服务器..
我怎么能解决这个问题,除了这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标题..