问题描述
当对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]
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!
分类: 【Azure 应用服务】
标签: App Service, App Server Windows IIS, Web.config remove httpprotocol customheaders, security requestfiltering removeserverheader, enableVersionHeader="false"