跨域資源策略 (CORP) 的實現
跨域資源策略 (CORP) 由 Cross-Origin-Resource-Policy 響應頭設定,它允許網站和應用程式選擇加入,以防禦與某些跨域請求(例如由 <script> 和 <img> 元素髮起的請求)相關的漏洞。
問題
一些側通道硬體漏洞(也稱為跨站洩露,或 XS-Leaks),例如 Meltdown 和 Spectre,利用了現代處理器推測執行功能中出現的競態條件。此功能旨在提高效能,但可能會被利用來洩露敏感資料。
解決方案
使用 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 模式發起的跨域請求
Cross-Origin-Resource-Policy: same-origin
指示瀏覽器允許跨域資源訪問,包括訪問具有無節流定時器的功能(例如 SharedArrayBuffer 物件或 Performance.now())
Cross-Origin-Resource-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
這也允許此類資源被嵌入。