跨域資源策略 (CORP) 的實現

跨域資源策略 (CORP) 由 Cross-Origin-Resource-Policy 響應頭設定,它允許網站和應用程式選擇加入,以防禦與某些跨域請求(例如由 <script><img> 元素髮起的請求)相關的漏洞。

問題

一些側通道硬體漏洞(也稱為跨站洩露,或 XS-Leaks),例如 MeltdownSpectre,利用了現代處理器推測執行功能中出現的競態條件。此功能旨在提高效能,但可能會被利用來洩露敏感資料。

解決方案

使用 Cross-Origin-Resource-Policy 來阻止對給定資源的 no-cors 跨域請求。由於此策略是透過響應頭表達的,因此實際請求並未被阻止。相反,瀏覽器會透過剝離響應體來阻止結果洩露。

可能的值為

same-origin

將資源訪問限制在來自同源的請求。這推薦用於返回敏感使用者資訊或私有 API 的 URL。

same-site

將資源訪問限制在來自同一站點的請求。這推薦用於其功能在多個其他同站域名之間共享的源的響應。例如,一個公司 CDN,它提供靜態資源;一個單一登入 (SSO) 應用,它處理身份驗證。

cross-origin

允許跨域請求訪問資源。這僅推薦用於廣泛使用的源的響應,例如公共 CDN 或小部件。如果未設定 Cross-Origin-Resource-Policy,這是預設值。

為您的網站設定儘可能嚴格的值。

反過來,如果您的網站需要訪問跨域資源,則透過傳送 Cross-Origin-Embedder-Policy 標頭以及相關的請求來選擇更好的預設設定。這將阻止載入未明確傳送 Cross-Origin-Resource-Policy: cross-origin 標頭的跨域資源。

示例

指示瀏覽器禁止以 no-cors 模式發起的跨域請求

http
Cross-Origin-Resource-Policy: same-origin

指示瀏覽器允許跨域資源訪問,包括訪問具有無節流定時器的功能(例如 SharedArrayBuffer 物件或 Performance.now()

http
Cross-Origin-Resource-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

這也允許此類資源被嵌入。

另見