CSP 內容安全策略筆記
阿新 • • 發佈:2021-10-07
CSP(Content-Security-Policy)內容安全策略,主要用於預防常見的Web攻擊,如XSS攻擊、資料注入攻擊等。服務端通過設定響應報文的Content-Security-Policy
欄位,控制瀏覽器可以為該頁面獲取哪些資源,下面是一些常用的設定示例
default-src
default-src 用於控制網頁中資源的安全性
// 允許使用內聯 JavaScript 和 CSS Content-Security-Policy: default-src 'unsafe-inline' // 允許使用類似 eval 的 text-to-JavaScript 機制 Content-Security-Policy: default-src 'unsafe-eval' // 必須與當前來源(而不是其子域)匹配 Content-Security-Policy: default-src 'self' // 不執行任何匹配,所有內聯、外聯的JS和CSS等資源都不允許引入 Content-Security-Policy: default-src 'none'
上面的關鍵字需要使用單引號,多個屬性值用空格分割。除此之外也可以通過特定的條件限制訪問源,比如只允許https、或者只允許某些特定網址
// 只信任 https://cdn.example.net 和 https://api.example.net 的資源
Content-Security-Policy: default-src https://cdn.example.net https://api.example.net;
// 只允許https資源
Content-Security-Policy: default-src https
上面列出的關鍵字和策略適用於所有的資源安全控制,比如script-src
、style-src
img-src
script-src
script-src 用於控制網頁中JS的安全性
// nonce-<base64-value>: 允許某個特定的內聯指令碼
Content-Security-Policy: default-src 'self'; script-src nonce-'asdf'
<script nonce="asdf">
console.log('inline script')
</script>
img-src
// 允許 example.com 下的所有圖片資源 Content-Security-Policy: img-src https://*.example.com
除了上面列出的這些策略,還有很多可以控制的指令,具體可已參考MDN文件,平時用的較多的是script-src
和default-src
,
參考文章
部落格: https://blog.86886.wangGitHub: https://github.com/wmui