跨域資源共享策略 (CORP)

跨域資源策略 是由 Cross-Origin-Resource-Policy HTTP 標頭 設定的策略,它允許網站和應用程式選擇加入針對來自其他來源的某些請求的保護(例如,使用 <script><img> 等元素髮出的請求),以減輕投機性側通道攻擊,例如 幽靈,以及跨站點指令碼包含攻擊。

CORP 是除了預設的 同源策略 之外的另一層保護。跨域資源策略補充了 跨域讀取阻止 (CORB),它是一種預設阻止某些跨域讀取的機制。

注意: 策略僅對 no-cors 請求有效,這些請求預設情況下由 CORS 安全列表方法/標頭髮出。

由於此策略是透過響應標頭 表示的,因此不會阻止實際請求,而是瀏覽器透過剝離響應主體來阻止結果洩露。

用法

注意: 由於 Chrome 中的錯誤,設定 Cross-Origin-Resource-Policy 會破壞 PDF 渲染,阻止訪問者閱讀某些 PDF 的第一頁之後的頁面。在生產環境中使用此標頭時請謹慎。

Web 應用程式透過 Cross-Origin-Resource-Policy HTTP 響應標頭設定跨域資源策略,該標頭接受三個值之一

same-site

只有來自同一網站 的請求才能讀取資源。

警告: 這比 來源 不那麼安全。用於檢查兩個來源是否為同一網站的 演算法 在 HTML 標準中定義,涉及檢查可註冊域

same-origin

只有來自同一來源(即方案 + 主機 + 埠)的請求才能讀取資源。

cross-origin

來自任何來源(同站和跨站)的請求都可以讀取資源。當使用 COEP 時,這很有用(見下文)。

http
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 值存在的原因。

歷史

該概念最初是在 2012 年提出的(作為 From-Origin),但在 2018 年第二季度 重新出現 並已在 Safari 和 Chromium 中實現。

在 2018 年初,發現了兩種名為熔斷幽靈的側通道硬體漏洞。這些漏洞允許由於競態條件而洩露敏感資料,而競態條件是作為旨在提高效能的投機執行功能的一部分而產生的。

作為回應,Chromium 發行了 跨域讀取阻止,它會自動保護某些資源(Content-Type 為 HTML、JSON 和 XML)免遭跨域讀取。如果應用程式未提供 no-sniff 指令,Chromium 將嘗試猜測 Content-Type 並仍然應用保護。

Cross-Origin-Resource-Policy 是一個可選的響應標頭,它可以保護任何資源;瀏覽器不需要嗅探 MIME 型別。

規範

規範
獲取標準
# cross-origin-resource-policy-header

瀏覽器相容性

BCD 表僅在啟用 JavaScript 的瀏覽器中載入

另請參閱