跨源資源策略(CORP)
跨域資源策略是由 Cross-Origin-Resource-Policy HTTP 頭設定的策略,它允許網站和應用程式選擇加入對來自其他源的某些請求的保護(例如那些使用 <script> 和 <img> 等元素髮出的請求),以緩解推測性旁路攻擊,例如 Spectre,以及跨站指令碼包含攻擊。CORP 是在預設的 同源策略之外的額外保護層。
注意:此策略僅對 no-cors 請求有效,這些請求預設由 CORS 安全列表中的方法/頭髮出。
由於此策略是透過響應頭表達的,因此實際請求不會被阻止——相反,瀏覽器透過剝離響應體來阻止結果洩露。
用法
注意:由於 Chrome 中的一個錯誤,設定 Cross-Origin-Resource-Policy 可能會破壞 PDF 渲染,導致訪問者無法閱讀某些 PDF 的第一頁之後的內容。在生產環境中使用此頭時請謹慎。
Web 應用程式透過 Cross-Origin-Resource-Policy HTTP 響應頭設定跨域資源策略,該頭接受以下三個值之一:
same-site-
只有來自同一站點的請求才能讀取資源。
警告:這比源的安全性低。檢查兩個源是否為同站點的演算法在 HTML 標準中定義,並涉及檢查可註冊域。
same-origin-
只有來自同一源(即方案 + 主機 + 埠)的請求才能讀取資源。
cross-origin-
來自任何源(同站點和跨站點)的請求都可以讀取資源。這在使用 COEP 時很有用(參見下文)。
Cross-Origin-Resource-Policy: same-site | same-origin | cross-origin
在跨域資源策略檢查期間,如果設定了頭,瀏覽器將拒絕來自不同源/站點的 no-cors 請求。
與跨域嵌入者策略 (COEP) 的關係
Cross-Origin-Embedder-Policy HTTP 響應頭,當用於文件時,可以用來要求子資源要麼與文件同源,要麼帶有 Cross-Origin-Resource-Policy HTTP 響應頭以表明它們可以被嵌入。這就是 cross-origin 值存在的原因。
History
這個概念最初於 2012 年提出(作為一個 From-Origin 頭),但在 2018 年第二季度復活,並在 Safari 和 Chromium 中實現。
2018 年初,披露了兩種稱為 Meltdown 和 Spectre 的旁路硬體漏洞。這些漏洞由於推測執行功能(旨在提高效能)中出現的競態條件而導致敏感資料洩露。
跨域資源策略是為了讓網站能夠直接阻止不需要的 no-cors 跨域請求而開發的。這是防禦類似 Spectre 攻擊的有效方法,因為瀏覽器在攻擊者訪問響應體之前將其剝離。
規範
| 規範 |
|---|
| Fetch # cross-origin-resource-policy-header |
瀏覽器相容性
載入中…
另見
Cross-Origin-Resource-PolicyHTTP 頭