Content Security Policy 入門教程
跨域腳本攻擊 XSS 是最常見、危害最大的網(wǎng)頁安全漏洞。
為了防止它們,要采取很多編程措施,非常麻煩。很多人提出,能不能根本上解決問題,瀏覽器自動禁止外部注入惡意腳本?這就是"網(wǎng)頁安全政策"(Content Security Policy,縮寫 CSP)的來歷。本文詳細(xì)介紹如何使用 CSP 防止 XSS 攻擊。
一、簡介
CSP 的實質(zhì)就是白名單制度,開發(fā)者明確告訴客戶端,哪些外部資源可以加載和執(zhí)行,等同于提供白名單。它的實現(xiàn)和執(zhí)行全部由瀏覽器完成,開發(fā)者只需提供配置。CSP 大大增強(qiáng)了網(wǎng)頁的安全性。攻擊者即使發(fā)現(xiàn)了漏洞,也沒法注入腳本,除非還控制了一臺列入了白名單的可信主機(jī)。
兩種方法可以啟用 CSP。一種是通過 HTTP 頭信息的Content-Security-Policy的字段。
Content-Security-Policy: script-src 'self'; object-src 'none';
style-src cdn.example.org third-party.org; child-src https:
另一種是通過網(wǎng)頁的 標(biāo)簽。
<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">
上面代碼中,CSP 做了如下配置。
- 腳本:只信任當(dāng)前域名