1 背景
跨域腳本攻擊,網絡安全漏洞,於是就有了內容安全防護策略,從根本上解決這個問題。
2 啟用CSP的方式有2種
修改meta標簽,http-equive
服務器 響應頭設置
3 主要的CSP策略有5種
設置 CSP 的示范代碼:
一般情況會這樣設置: Content-Security-Policy: block-all-mixed-content
res.writeHead(200, { 'Content-Type': 'text-html', 'Content-Security-Policy': 'default-src http: https:' });
不同csp限制類型的使用說明
a,不允許使用內聯腳本或樣式,限制引入文件的方式
'Content-Security-Policy': 'default-src http: https:'
b,允許加載指定域名下的文件資源
'Content-Security-Policy': 'default-src \'self\''
'Content-Security-Policy': 'default-src \'self\' https://cdn.bootcss.com/'
c,防止表單提交時訪問站點
<form action="https://baidu.com"> 會跳轉到百度頁面 <button>click me</button> </form>
'Content-Security-Policy': 'default-src \'self\' https://cdn.bootcss.com/; form-action \'self\''
d,default-src 設置的是全局,如果只想限制js類型的請求,可以這樣寫
'Content-Security-Policy': 'script-src http: https'
e,設置響應報告,瀏覽器會給服務器主動發送 report api 的請求,返回具體的違反CSP的信息,在執行限制策略的同時發送報告
'Content-Security-Policy': 'default-src \'self\' https://cdn.bootcss.com/; form-action \'self\; report-uri /report''
d,只發送報告,不執行限制的策略
'Content-Security-Policy-Report-Only' 只會發送報告,不會執行策略
f,在 meta 標簽上設置 csp
<meta http-equiv="Content-Security-Policy" content="form-action 'self';">
和服務器上請求頭上設置是一樣的效果,但是不能發送違反策略的信息報告。
CSP詳細策略可參考HTML5開發規范