跨域腳本攻擊,網絡安全漏洞,因而就有了內容安全防禦策略,從根本上解決這個問題。php
2 啓用CSP的方式有2種css
修改meta標籤,http-equivehtml
服務器 響應頭設置api
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:'ui
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開發規範