CSP 源值
HTTP Content-Security-Policy (CSP) 頭部指令指定資源可以從哪些 <source> 載入,可以使用下面列出的任何一個值。相關的指令包括 獲取指令,以及下面 列出的其他指令。
來源
<host-source>-
網際網路主機名稱或 IP 地址。 URL 方案、埠號和路徑是可選的。 萬用字元 (
'*') 可用於子域、主機地址和埠號,表示每個合法值都是有效的。 當匹配方案時,允許安全升級(例如,指定http://example.com將匹配https://example.com)。示例http://*.example.com: 匹配所有嘗試從 example.com 的任何子域載入的請求。 還匹配https資源。mail.example.com:443: 匹配所有嘗試從 mail.example.com 上的埠 443 載入的請求。https://store.example.com: 匹配所有嘗試使用https:訪問 store.example.com 的請求。*.example.com: 匹配所有嘗試從 example.com 的任何子域載入的請求。https://*.example.com:12/path/to/file.js: 匹配所有嘗試使用https:從 example.com 的任何子域載入的請求,並且僅當路徑為/path/to/file.js時。ws://example.com: 匹配所有嘗試使用ws:從 example.com 載入的請求。 還匹配wss資源。https://example.com/subdirectory: 匹配所有嘗試載入確切路徑https://example.com/subdirectory的請求。https://example.com/subdirectory/: 匹配所有嘗試載入subdirectory目錄下檔案的請求。 例如,https://example.com/subdirectory/path/to/file.js。 它不匹配https://example.com/path/to/file.js。
有關路徑匹配方式的更多詳細資訊,請參閱規範中的 部分匹配演算法。
<scheme-source>-
一個方案,例如
http:或https:。 冒號是必需的。 與下面的其他值不同,不應使用單引號。 你還可以指定資料方案(不推薦)。-
data:允許使用data:URL 作為內容來源。 這並不安全;攻擊者還可以注入任意data:URL。 謹慎使用此方法,絕對不要用於指令碼。 mediastream:允許使用mediastream:URI 作為內容來源。blob:允許使用blob:URI 作為內容來源。filesystem:允許使用filesystem:URI 作為內容來源。
注意: 如果缺少方案來源,則使用文件來源的方案。 允許安全升級,因此,如果文件使用
https:載入,那麼example.com將匹配https://example.com但不匹配http://example.com。 有關更多資訊,請參閱 CSP Level 3。 -
'self'-
指的是提供受保護文件的來源,包括相同的 URL 方案和埠號。 你必須包含單引號。 一些瀏覽器專門從源指令中排除
blob和filesystem。 需要允許這些內容型別的網站可以使用 Data 屬性指定它們。 'unsafe-eval'-
允許使用
eval()和其他不安全方法從字串建立程式碼。 你必須包含單引號。 'wasm-unsafe-eval'-
允許載入和執行 WebAssembly 模組,而無需透過
'unsafe-eval'也允許不安全的 JavaScript 執行。 單引號是必需的。 'unsafe-hashes'-
允許啟用特定內聯 事件處理程式。 如果你只需要允許內聯事件處理程式,而不是內聯
<script>元素或javascript:URL,與使用unsafe-inline表示式相比,這是一種更安全的方法。 'unsafe-inline'-
允許使用內聯資源,例如內聯
<script>元素、javascript:URL、內聯事件處理程式和內聯<style>元素。 單引號是必需的。 'none'-
指的是空集;也就是說,沒有 URL 匹配。 單引號是必需的。
'nonce-<base64-value>'-
使用密碼隨機數(一次性使用數字)為特定內聯指令碼建立允許列表。 伺服器必須在每次傳輸策略時生成一個唯一的隨機數。 為提供不可猜測的隨機數至關重要,因為否則繞過資源的策略將是微不足道的。 請參閱 不安全的內聯指令碼 以獲取示例。 指定隨機數會使現代瀏覽器忽略
'unsafe-inline',而'unsafe-inline'仍然可以為不支援隨機數的舊瀏覽器設定。注意: CSP
nonce來源只能應用於可隨機數元素(例如,由於<img>元素沒有nonce屬性,因此無法將其與此 CSP 來源相關聯)。 '<hash-algorithm>-<base64-value>'-
指令碼或樣式的 sha256、sha384 或 sha512 雜湊。 此值由用於建立雜湊的演算法、連字元和指令碼或樣式的 Base64 編碼雜湊組成。 生成雜湊時,請排除 <script> 或 <style> 標記,並注意大小寫和空格很重要,包括前導或尾隨空格。 在 CSP 2.0 中,雜湊源可以應用於內聯指令碼和樣式。 在 CSP 3.0 中,雜湊源表示式允許用於
script-src指令中的外部指令碼。 有關更多資訊和示例,請參閱 script-src 和 style-src 頁面。 'strict-dynamic'-
strict-dynamic源表示式指定,明確賦予標記中存在的指令碼(透過附帶隨機數或雜湊)的信任將傳播到該根指令碼載入的所有指令碼。 同時,任何允許列表或源表示式(如'self'或'unsafe-inline')都將被忽略。 有關示例,請參閱 script-src。 'report-sample'-
要求在違規報告中包含違規程式碼的樣本。
'inline-speculation-rules'-
允許在指令碼中包含 推測規則(另請參閱
<script type="speculationrules">)。
規範
| 規範 |
|---|
| 內容安全策略級別 3 # framework-directive-source-list |