10-illust_63550944_20180809_213806.png
0x01 簡介
CSP,全稱Content Security Policy
狼电,內(nèi)容安全策略,是一個(gè)附加的安全層弦蹂,用于檢測(cè)并削弱某些特定類型的攻擊肩碟,包括跨站腳本 (XSS
) 和數(shù)據(jù)注入攻擊等
CSP的特點(diǎn)就是他是在瀏覽器層面做的防護(hù),是和同源策略同一級(jí)別凸椿,除非瀏覽器本身出現(xiàn)漏洞削祈,否則不可能從機(jī)制上繞過
有兩張方式啟用 CSP :
- 設(shè)置 HTTP 頭的
Content-Security-Policy
字段 -
<meta>
元素也可以被用來配置該策略
1. 設(shè)置 HTTP 頭的 Content-Security-Policy
字段
你可以使用
Content-Security-Policy: policy
來制定你的策略
policy
參數(shù)是一個(gè)包含了各種描述你的CSP策略指令的字符串策略指令
策略指令分很多種,每種指令都分管瀏覽器中請(qǐng)求的一部分
常用指令 | 說明 |
---|---|
child-src |
為 web workers和其他內(nèi)嵌瀏覽器內(nèi)容定義 合法的源 |
connect-src |
定義 AJAX脑漫、WebSocket等加載策略 |
default-src |
定義資源默認(rèn)加載策略 |
font-src |
限制通過@font-face 加載的字體源 |
frame-src |
限制通過類似<frame> 和<iframe> 標(biāo)簽加載的內(nèi)嵌內(nèi)容源 |
img-src |
限制圖片和圖標(biāo)源 |
script-src |
限制javascript 源 |
style-src |
限制 CSS 加載源 |
object-src |
限制通過 <object> , <embed> 髓抑,<applet> 標(biāo)簽加載源 |
media-src |
限制通過<audio> 或<video> 標(biāo)簽加載的媒體文件源 |
sandbox |
允許類似{HTMLElement("iframe")}} sandbox sandbox 屬性 |
report-uri |
值為 /report-uri ,提交日志 |
每種指令都有不同的配置,例如:
-
default-src 'self'
#'self'
指向與要保護(hù)的文件所在的源窿撬,包括相同的 URL scheme 與端口號(hào)。必須有單引號(hào) -
default-src 'unsafe-eval'
#'unsafe-eval'
允許使用eval()
以及相似的函數(shù)來從字符串創(chuàng)建代碼叙凡。必須有單引號(hào)劈伴。
針對(duì)不同來源,不同方式的資源加載握爷,都有相應(yīng)的加載策略
2. <meta>
元素也可以被用來配置該策略
例如:
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
0x02 示例:常見用例
- 所有內(nèi)容均來自站點(diǎn)的同一個(gè)源 (不包括其子域名)
Content-Security-Policy: default-src 'self'
- 允許內(nèi)容來自信任的域名及其子域名 (域名不必須與CSP設(shè)置所在的域名相同)
Content-Security-Policy: default-src 'self' *.trusted.com
- 確保網(wǎng)站的所有內(nèi)容都要通過SSL方式獲取跛璧,以避免攻擊者竊聽用戶發(fā)出的請(qǐng)求
Content-Security-Policy: default-src https://onlinebanking.jumbobank.com
- 只允許加載當(dāng)前域的js
header("Content-Security-Policy: default-src 'self'; script-src 'self' ");
image.png
0x03 ref
Content Security Policy (CSP)
Content-Security-Policy
前端防御從入門到棄坑--CSP變遷