Nic*_*ans 82 asp.net iis-7 azure penetration-testing response-headers
我需要删除过多的标题(主要是为了通过渗透测试).我花时间查看涉及运行UrlScan的解决方案,但这些都很麻烦,因为每次启动Azure实例时都需要安装UrlScan.
必须有一个很好的Azure解决方案,不涉及从startup.cmd部署安装程序.
我知道响应标头添加在不同的地方:
是否有任何方法配置(通过web.config等?)IIS7删除/隐藏/禁用HTTP响应标头,以避免asafaweb.com上的"过多标题"警告,而无需创建IIS模块或部署需要的安装程序每次Azure实例启动时运行?
Nic*_*ans 137
以下更改允许您在Azure中删除这些HTTP响应标头,而无需编写自定义HttpModule.
网上的大部分信息都已过时,并涉及UrlScan(此后已集成到IIS7中,但RemoveServerHeader=1删除了该选项).下面是我发现的最好的解决方案(感谢这个博客,这个答案,以及这个博客的结合).
要删除Server,请转到Global.asax,查找/创建Application_PreSendRequestHeaders事件并添加以下内容(感谢BK和此博客,这也不会在Cassini/local dev上失败):
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");
}
}
Run Code Online (Sandbox Code Playgroud)
要删除X-AspNet-Version,请在web.config中找到/创建<system.web>并添加:
<system.web>
<httpRuntime enableVersionHeader="false" />
...
Run Code Online (Sandbox Code Playgroud)
要删除X-AspNetMvc-Version,请转到Global.asax,查找/创建Application_Start事件并添加一行,如下所示:
protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
}
Run Code Online (Sandbox Code Playgroud)
要删除X-Powered-By,请在web.config中找到/创建<system.webServer>并添加:
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
Run Code Online (Sandbox Code Playgroud)
AKh*_*oli 11
MSDN发布了有关如何在Azure网站上隐藏标头的文章.现在,您可以通过向system.webServer添加条目来从web.config隐藏服务器
<security>
<requestFiltering removeServerHeader ="true" />
</security>
Run Code Online (Sandbox Code Playgroud)
虽然VS会对上面的内容感到无效.上面的链接有代码作为图片,很难找到.如上所述,MVC版本仍然隐藏在应用程序启动中,对于x-powered-by和.Net版本也是如此.
NuGet上还有一个软件包可以帮助您通过几行配置实现这一点,而无需更改代码:NWebsec.有关删除版本标题的文档可以在这里找到:https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers
它在这里演示:http://www.nwebsec.com/HttpHeaders/VersionHeaders (在Azure中)
免责声明:我是该项目的开发人员.
如果出于安全考虑删除这些标头,请不要忘记更改ASP.NET Session coockie name!因为在看到此消息时,更容易猜测所使用的语言或服务器版本:
更改Cookie的名称:(有创意)
<system.web>
<sessionState cookieName="PHPSESSID" />
</system.web>
Run Code Online (Sandbox Code Playgroud)