我有一个在生产服务器中的网站,它应该非常安全,所以我想保护 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 部分添加了以下代码
但是对于服务器标头删除代码不起作用:(
我使用的代码是:
我添加了一个名为 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 个设置之外,还有其他更安全的设置吗?