最近一個客戶通過專業工具掃描網站,發現了幾個低等級的安全問題,其中有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:\Windows\System32\inetsrv\appcmd.exe install module /name:StripHeadersModule /image:%windir%\system32\inetsrv\stripheaders.dll /add:true /lock:true
然后再重啟IIS服務,就可以了。