问题描述
当对Azure App Service应用进行安全扫描时,发现了HTTP/S请求的响应头中会包含服务端IIS的版本信息,这是一个低风险因素。
如:
Server: Microsoft-IIS/10.0 X-AspNet-Version: 4.0.30319 X-AspNetMvc-Version: 5.2 X-Powered-By: ASP.NET
如来修改App Service的Web.config来屏蔽这些信息呢?
问题解答
进入App Service的高级工具Kudu站点:
在已有的web.config中,添加如下两部分内容。
1:在web.config文件中的system.webServer 部分增加
<security> <requestFiltering removeServerHeader="true" /> </security>
2:如果想屏蔽 Server,X-AspNet-Version,X-AspNetMvc-Version 和 X-Powered-By,需要增加:
<httpProtocol> <customerHeaders> <remove name="Server" /> <remove name="X-AspNet-Version" /> <remove name="X-AspNetMvc-Version" /> <remove name="X-Powered-By" /> </customerHeaders> </httpProtocol>
和
<system.web> <httpRuntime targetFramework="4.7.2" enableVersionHeader="false" /> </system.web>
修改后的web.config,应该类似:
<?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit https://go.microsoft.com/fwlink/?LinkId=301880 --> <configuration> <appSettings> <add key="webpages:Version" value="3.0.0.0"/> </appSettings> <system.web> <compilation targetFramework="4.7.2"/> <httpRuntime targetFramework="4.7.2" enableVersionHeader="false" /> </system.web> <system.webServer> <httpProtocol> <customHeaders> <remove name="Server" /> <remove name="X-AspNet-Version" /> <remove name="X-AspNetMvc-Version" /> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> <security> <requestFiltering removeServerHeader="true" /> </security> </system.webServer> </configuration>
经过以上的操作后,成功的删除了Server,X-AspNet-Version, X-Powered-By的消息,但是, X-AspNetMvc-Vserion 依然存在。
在博客园中查找到通过以下的方式来隐藏 X-AspNetMvc-Version信息。
标头名称:X-AspNet-Version
在web.config的httpRuntime部分中-设置:
<httpRuntime enableVersionHeader="false" />
标头名称:X-AspNetMvc-Version
从global.asax中的Application_Start事件-执行以下代码(C#):
MvcHandler.DisableMvcResponseHeader = true;
[END]