我需要删除过多的头 (主要是通过渗透测试)。 我花时间看这涉及运行UrlScan的解决方案,但这些繁琐的UrlScan的需要每一个Azure的实例启动时要安装 。
必须有Azure的一个很好的解决方案,不涉及从STARTUP.CMD部署安装。
据我所知,响应报头中添加不同的地方 :
- 服务器 :通过IIS添加。
- X-ASPNET-版本 :在冲洗中的HttpResponse类的时间System.Web.dll中添加
- X-AspNetMvc-版本 :通过MvcHandler在System.Web.dll中添加。
- X-已启动方式 :通过IIS添加
是否有任何方式(通过的web.config等?)来配置IIS7以除去/隐藏/禁用HTTP响应报头,以避免“过度集管”在警告asafaweb.com ,而不产生IIS模块或部署其需要安装人员在每次的Azure的实例启动时运行?
下面的变化让你删除这些Azure的HTTP响应头,而无需编写自定义HTTP模块。
大部分的在网上的信息是过时的,并涉及UrlScan的(这已被集成到IIS7,但与RemoveServerHeader=1
选项移除)。 下面是最巧妙的解决方案,我发现(感谢这个博客 , 这个答案 ,并且这个博客相结合)。
要删除服务器 ,去Global.asax中,找到/创建Application_PreSendRequestHeaders
事件并添加以下(感谢BK和这个博客 ,这也将不会在卡西尼/本地开发失败):
编辑2014年4月:您可以使用PreSendRequestHeaders和PreSendRequestContext事件与本地IIS模块,但不实现IHttpModule的管理模块中使用它们。 设置这些属性可能会导致问题的异步请求 。 正确的版本是使用BeginRequest事件。
protected void Application_BeginRequest(object sender, EventArgs e)
{
var application = sender as HttpApplication;
if (application != null && application.Context != null)
{
application.Context.Response.Headers.Remove("Server");
}
}
要删除X-ASPNET版,在web.config找到/创建<system.web>
并添加:
<system.web>
<httpRuntime enableVersionHeader="false" />
...
要删除X-AspNetMvc版,去Global.asax中,找到/创建Application_Start
事件,并添加一行,如下所示:
protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
}
脱除X供电-通过 ,在web.config找到/创建<system.webServer>
并添加:
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
MSDN发表的这篇文章就如何隐藏在Azure上的网站标题。 现在,您可以通过添加到system.webServer条目隐藏web.config中的服务器
<security>
<requestFiltering removeServerHeader ="true" />
</security>
VS将在上述无效虽然皱眉。 上面的链接有代码,图片,很难找到。 MVC版本仍然隐藏在应用如上开始,同为X供电,通过和.NET版本。
还有上的NuGet包,可以帮助您通过配置的几行代码没有变化实现这一点:NWebsec。 在除去版本头的文档可以在这里找到: https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers
它在这里演示了: http://www.nwebsec.com/HttpHeaders/VersionHeaders (天青)
免责声明:我对这个项目的开发商。
尼克·埃文斯的回答是完美的,但是...
如果删除这些标题为安全起见,不要忘记改变ASP.NET Session coockie name
! 因为它更容易,当你看到这个猜测使用的语言或服务器版本:
要更改cookie的名称:(创意)
<system.web>
<sessionState cookieName="PHPSESSID" />
</system.web>
卷起从@ giveme5minutes和@AKhooli以前的答案,因为这涉及到Azure的网站加上扫描仪希望看到一些其他的项目,这些是我取得了令ASafaWeb快乐与Azure的网站进行了更改。
它仍然抱怨Azure的亲和力头的cookie不是仅HTTPS,但亲和力cookie的类型你想反正重播,对不对?
<system.web>
<compilation debug="false">
<httpRuntime enableVersionHeader="false" />
<httpCookies httpOnlyCookies="true" requireSSL="true" />
<customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx" />
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="DENY" />
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<security>
<!--removes Azure headers-->
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
文章来源: Removing/Hiding/Disabling excessive HTTP response headers in Azure/IIS7 without UrlScan