最近一个客户通过专业工具扫描网站,发现了几个低等级的安全问题,其中有csp安全设置缺乏,http请求表头返回敏感信息未处理,跨站攻击防范未处理等,要求我们予以修复。
说实话,这类事情,国内很多人都没听说过,因为没人重视,也可能是有些人刻意为之的缘故吧,否则那些广告联盟的饭就不好吃了。。。。
废话少说,现在就把处理的过程简单记录下来:
首先是在网站配置文件里添加如下节点,用于csp设置,下面的例子设置为最严防范
-
<system.web>
-
...
-
<httpRuntime enableVersionHeader="false" />
-
<system.webServer>
-
...
-
<httpProtocol>
-
<customHeaders>
-
<add name="X-Frame-Options" value="SAMEORIGIN" />
-
<add name="Content-Security-Policy" value="default-src 'self'; style-src 'self' 'unsafe-inline'; media-src *; script-src 'self' 'unsafe-eval' 'unsafe-inline'; img-src 'self'"/>
-
</customHeaders>
-
</httpProtocol>
-
</system.webServer>
-
</system.web>
然后是禁止iis返回服务器敏感信息,网上查了N种方法,都不行,要么是过时了,要么是没有效果,要么是应用范围比较窄。。。
最后同事在github上发现了一个开源的项目,可以轻松解决这个问题,现在也贴出来:
我们只要下载msi文件点击安装,然后重启iis就可以了。
做完之后,再打开网站,就会看到,所有返回的请求头里,server信息以及X-Powered-By、X-AspNet-Version、X-AspNetMvc-Version等都消失了,并且csp也正确反馈出来了。
注意:如果没有效果,或是页面报错了,可能是系统用户权限不足,需要手动注册一下这个StripHeaders。
可以用管理员权限打开命令行窗口,执行如下命令:
C:WindowsSystem32inetsrvappcmd.exe install module /name:StripHeadersModule /image:%windir%system32inetsrvstripheaders.dll /add:true /lock:true
然后再重启IIS服务,就可以了。