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 方案和埠號。 你必須包含單引號。 一些瀏覽器專門從源指令中排除 blobfilesystem。 需要允許這些內容型別的網站可以使用 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-srcstyle-src 頁面。

'strict-dynamic'

strict-dynamic 源表示式指定,明確賦予標記中存在的指令碼(透過附帶隨機數或雜湊)的信任將傳播到該根指令碼載入的所有指令碼。 同時,任何允許列表或源表示式(如 'self''unsafe-inline')都將被忽略。 有關示例,請參閱 script-src

'report-sample'

要求在違規報告中包含違規程式碼的樣本。

'inline-speculation-rules'

允許在指令碼中包含 推測規則(另請參閱 <script type="speculationrules">)。

規範

規範
內容安全策略級別 3
# framework-directive-source-list

相關指令