使用 COEP:無憑證功能載入不含 CORP 標頭的跨來源資源

由第三方提供的跨來源資源通常沒有足夠的 CORP 標頭。如果無需憑證就能請求,現在您只要將這類憑證標示為授權,即可啟用跨來源隔離功能。

我們已推出新的跨來源嵌入政策 (COEP) 值 credentialless,可讓瀏覽器載入跨來源資源, 不使用跨來源資源政策 (CORP),也就是傳送不含 憑證,例如 Cookie這有助於開發人員採用跨來源架構 以便更輕鬆地隔離

為何需要跨來源隔離

某些網路 API 會增加旁路攻擊的風險,例如: Spectre。目的地: 降低這項風險,瀏覽器提供了名為「選擇性」的獨立環境, 跨來源隔離。跨來源 獨立狀態,網頁可以使用特殊權限功能,包括 SharedArrayBufferperformance.measureUserAgentSpecificMemory()和更高畫質的高精確度計時器 以及區隔來源,除非他們選擇接收。

網頁必須傳送兩個 HTTP 標頭,才能啟用跨來源隔離功能:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

在跨來源隔離狀態時,必須提供所有跨來源資源 並設定要載入的 Cross-Origin-Resource-Policy 標頭。

啟用跨來源隔離的挑戰

跨來源隔離可提高網頁安全性,且 以便部署強大功能 就須滿足下列需求,才能為所有跨源源啟用 CORS 或 CORP 再複習一下,機構節點 是所有 Google Cloud Platform 資源的根節點瀏覽器不會載入沒有這些標頭的資源。 跨來源隔離頁面

這些跨來源資源通常是由可能會取得這類資源的第三方提供 難以加入必要的標題

不過,如果我們知道資源是否安全,足以載入內容呢?事實上 有風險的資源會要求取得憑證 可能包含攻擊者無法在其網站上載入的機密資訊 這代表不必憑證就能要求的資源 而且可以安全載入

距離救援時間:credentialless

這時 COEP: credentialless 就能派上用場。credentialless 是新的值 ,以供 Cross-Origin-Embedder-Policy 標頭使用。和 require-corp 類似,這個引數可設為 啟用跨來源隔離,但不需要使用 CORP:cross-origin 沒有對等的跨來源要求標頭時,則會改為傳送,但不傳送 憑證 (例如 Cookie)。

您將可以改用 下列兩個標頭:

Cross-Origin-Embedder-Policy: credentialless
Cross-Origin-Opener-Policy: same-origin

這表示所請求的跨來源伺服器無法針對 機密資源,要求者隨時可以假設 包含公開資訊。

這也與瀏覽器逐步淘汰第三方 Cookie 的計畫。

示範

您可以在此示範中試用多種標頭選項: https://cross-origin-isolation.glitch.me

常見問題

我可以在 credentialless 環境下傳送憑證要求嗎?

當然,如果將要求的模式移轉至需要 CORS 檢查 回應。針對 <audio><img><link><script> 等 HTML 標記, 和 <video>,只要明確附加 crossorigin="use-credentials" 即可 以便瀏覽器傳送憑證要求

舉例來說,即使 https://www.example.com 上的文件 Cross-Origin-Embedder-Policy: credentialless 個標頭,<img src="https://images.example.com/avatar.png" crossorigin="use-credentials"> 會 傳送憑證要求。

如果是 fetch() API,則可使用 request.mode = 'cors'

COEP: credentialless 提供,COEP: require-corp 對我的網站仍然有幫助嗎?

COEP: require-corp 不需要手動將要求模式切換為 如果某些跨來源子資源需要 Cookie,則為 CORS。

我還可以在 credentialless 環境下載入沒有特殊標頭的跨來源 iframe 嗎?

否。載入 credentialless 環境下的跨來源 iframe 仍需與 require-corp 相同的條件。iframe 文件必須包含兩個標頭:

  • Cross-Origin-Embedder-Policy: credentialless (或 require-corp)
  • Cross-Origin-Resource-Policy: cross-origin

好消息是,請繼續討論,瞭解如何藉由讓 iframe crossorigin="anonymous" 在沒有標頭的情況下載入跨來源 iframe。 如此便能在沒有標頭的情況下載入跨來源 iframe 憑證

其他瀏覽器也會採用這項功能嗎?

後續步驟

我們即將推出兩項額外更新,以因應 跨來源隔離:

註冊參加 Chrome 來源試用以延長 SharedArrayBuffer 變更的使用者, 這些障礙或許會知道何時會終止。我們最初 先前宣布將在 Chrome 96 版中終止,但我們決定 並延後到 Chrome 106

資源

相片來源:Martin Adams停用