2021年1月19日 星期二

SwaggerUI 的 Content Security Policy (SCP) 設定

最近工作上用到靜態代碼分析工具,並且在修正 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 設定可參考這裡