HTTP 內容安全策略(CSP)詳細

2021-10-23 13:06:43 字數 3788 閱讀 9281

內容安全策略(csp),其核心思想十分簡單:**通過傳送乙個 csp 頭部,來告訴瀏覽器什麼是被授權執行的與什麼是需要被禁止的。其被譽為專門為解決xss攻擊而生的神器。

1.前言

內容安全策略 (csp) 是乙個額外的安全層,用於檢測並削弱某些特定型別的攻擊,包括跨站指令碼 (xss) 和資料注入攻擊等。無論是資料盜取、**內容汙染還是散發惡意軟體,這些攻擊都是主要的手段。

csp 被設計成完全向後相容(除csp2 在向後相容有明確提及的不一致; 更多細節檢視這裡 章節1.1)。不支援csp的瀏覽器也能與實現了csp的伺服器正常合作,反之亦然:不支援 csp 的瀏覽器只會忽略它,如常執行,預設為網頁內容使用標準的同源策略。如果**不提供 csp 頭部,瀏覽器也使用標準的同源策略。

為使csp可用, 你需要配置你的網路伺服器返回content-security-policyhttp頭部 ( 有時你會看到一些關於x-content-security-policy頭部的提法, 那是舊版本,你無須再如此指定它)。

2.csp作用

限制資源獲取

報告資源獲取越權

3.限制方式

default-src限制全域性

制定限制型別

資源型別有:connect-src、mainfest-src、img-src、font-src、media-src、style-src、frame-src、script-src…

4.應對威脅

4.1 跨站指令碼攻擊

csp 的主要目標是減少和報告 xss 攻擊 ,xss 攻擊利用了瀏覽器對於從伺服器所獲取的內容的信任。惡意指令碼在受害者的瀏覽器中得以執行,因為瀏覽器信任其內容**,即使有的時候這些指令碼並非來自於它本該來的地方。

csp通過指定有效域——即瀏覽器認可的可執行指令碼的有效**——使伺服器管理者有能力減少或消除xss攻擊所依賴的載體。乙個csp相容的瀏覽器將會僅執行從白名單域獲取到的指令碼檔案,忽略所有的其他指令碼 (包括內聯指令碼和html的事件處理屬性)。

作為一種終極防護形式,始終不允許執行指令碼的站點可以選擇全面禁止指令碼執行。

4.2 資料報嗅探攻擊

除限制可以載入內容的域,伺服器還可指明哪種協議允許使用;比如 (從理想化的安全角度來說),伺服器可指定所有內容必須通過https載入。乙個完整的資料安全傳輸策略不僅強制使用https進行資料傳輸,也為所有的cookie標記安全標識 cookies with the secure flag,並且提供自動的重定向使得http頁面導向https版本。**也可以使用 strict-transport-security http頭部確保連線它的瀏覽器只使用加密通道。

5.csp使用

csp分類:

(1)content-security-policy

配置好並啟用後,不符合 csp 的外部資源就會被阻止載入。

(2)content-security-policy-report-only

表示不執行限制選項,只是記錄違反限制的行為。它必須與report-uri選項配合使用。

csp的使用:

(1)在http header上使用(首選)

"content-security-policy:" 策略

"content-security-policy-report-only:" 策略

(2)在html上使用

"content-security-policy" content=

"策略"

>

"content-security-policy-report-only" content=

"策略"

>

meta 標籤與 http 頭只是行式不同而作用是一致的,如果 http 頭與 meta 定義同時存在,則優先採用 http 中的定義。

如果使用者瀏覽器已經為當前文件執行了乙個 csp 的策略,則會跳過 meta 的定義。如果 meta 標籤缺少 content 屬性也同樣會跳過。

csp使用例項:

1.乙個**管理者想要所有內容均來自站點的同乙個源 (不包括其子網域名稱)

content-security-policy:

default

-src 'self'

2.乙個**管理者允許內容來自信任的網域名稱及其子網域名稱 (網域名稱不必須與csp設定所在的網域名稱相同)

content-security-policy:

default

-src 'self'

*.trusted.com

content-security-policy:

default

-src 'self'

; img-src *

; media-src media1.com media2.com; script-src userscripts.example.com

在這裡,各種內容預設僅允許從文件所在的源獲取, 但存在如下例外:

4.乙個線上銀行**的管理者想要確保**的所有內容都要通過ssl方式獲取,以避免攻擊者竊聽使用者發出的請求。

該伺服器僅允許通過https方式並僅從onlinebanking.jumbobank.com網域名稱來訪問文件。

content-security-policy:

default

-src 'self'

*.mailsite.com; img-src *

注意這個示例並未指定script-src。在此csp示例中,站點通過 default-src 指令的對其進行配置,這也同樣意味著指令碼檔案僅允許從原始伺服器獲取。

6.csp的報告(report-only)模式

為降低部署成本,csp可以部署為報告(report-only)模式。在此模式下,csp策略不是強制性的,但是任何違規行為將會報告給乙個指定的uri位址。此外,乙個報告模式的頭部可以用來測試乙個修訂後的未來將應用的策略而不用實際部署它。

你可以用content-security-policy-report-only http 頭部來指定你的策略,像這樣:

content-security-policy-report-only: policy
如果content-security-policy-report-only 頭部和 content-security-policy 同時出現在乙個響應中,兩個策略均有效。在content-security-policy 頭部中指定的策略有強制性 ,而content-security-policy-report-only中的策略僅產生報告而不具有強制性。

支援csp的瀏覽器將始終對於每個企圖違反你所建立的策略都傳送違規報告,如果策略裡包含乙個有效的report-uri 指令。

然後你需要設定你的伺服器能夠接收報告,使其能夠以你認為恰當的方式儲存並處理這些報告。

CSP 內容安全策略

服務端可通過設定響應頭csp來實現 1.限制資源獲取 2.報告資源獲取越權 資源1 空格 關鍵字1 資源2 關鍵字2 如 content security policy script src self form action self report uri report ps 表轉義,避免node....

內容安全策略 CSP

內容安全策略 csp 是乙個額外的安全層,用於檢測並削弱某些特定型別的攻擊,包括跨站指令碼 xss 和資料注入攻擊等。摘自mdn 具體內容請參考mdn 對於react和vue,xss攻擊已經在框架裡進行了防範,但是使用 dangerouslysetinnerhtml react 和 v html v...

CSP內容安全策略

csp介紹 使用方法 維基百科 csp 的主要目標是減少和報告 xss 攻擊 xss 攻擊利用了瀏覽器對於從伺服器所獲取的內容的信任。惡意指令碼在受害者的瀏覽器中得以執行,因為瀏覽器信任其內容 即使有的時候這些指令碼並非來自於它本該來的地方。csp通過指定有效域 即瀏覽器認可的可執行指令碼的有效 使...