最近工作上用到靜態代碼分析工具,並且在修正 Critical Issue 時碰到一些問題,來分享紀錄一下
Fortify Static Code Analyzer
是一個靜態應用程式安全分析工具
我這次遇到的是 Content Security Policy (CSP) is not configured.
那什麼是 CSP 呢?看 Wiki 就知道了
Content Security Policy (CSP) is a computer security standard introduced to prevent cross-site scripting (XSS), clickjacking and other code injection attacks resulting from execution of malicious content in the trusted web page context.
https://en.wikipedia.org/wiki/Content_Security_Policy
一開始以為,喔~只要把 Content-Security-Policy: default-src 'none'
這個 Header 加上去就好了吧!沒錯,加上去再做一次 Fortify Scan 就沒有 CSP Critical Issue 了,但是 SwaggerUI 卻壞了…
因為 Swagger 的 css, js, icon 資源載入,全被 Browser 擋掉了。
這是因為 default-src 'none'
的意思是任何資源都不允許,所以必須開一些白名單讓自己網站的資源可以正常載入,最後改成這樣就正常了。
default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; img-src 'self' data:;
其他相關 CSP 設定可參考這裡
沒有留言:
張貼留言