使用 COEP 的開發人員現在可以嵌入不使用 COEP 的第三方 iframe。
自 Chrome 110 版起,系統預設會啟用無憑證 Iframe。這項解決方案解決了開發人員在使用 Cross-Origin-Embedder-Policy (COEP) 時最常遇到的問題:嵌入未設定 COEP 的第三方 iframe。
為何需要 COEP
某些網路 API 會提高遭受側通道攻擊的風險,例如 Spectre。為降低這類風險,瀏覽器提供「跨來源隔離」功能,這是一種需要部署 COEP 的選用隔離環境。跨原始來源隔離功能可讓網站使用特權功能,包括 SharedArrayBuffer
、performance.measureUserAgentSpecificMemory()
和高精確度計時器 (解析度更高)。
如要啟用跨來源隔離功能,網站必須傳送下列 HTTP 標頭:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
COEP:無憑證也可以用來取代 require-corp
。詳情請參閱說明文件。
啟用 COEP 的挑戰
雖然跨來源隔離可為網頁提供更完善的安全性,並啟用強大功能,但部署 COEP 可能會複雜。其中一個最大挑戰是,所有跨來源 iframe 都必須部署 COEP 和 CORP。如果 iframe 沒有這些標頭,瀏覽器就不會載入。
無憑證 iframe 可解決問題
我們推出 <iframe credentialless>
,協助嵌入未設定 COEP 的第三方 iframe。只要在 <iframe>
元素中加入 credentialless
屬性,即可從不同的空白內容載入 iframe。特別是,無需 Cookie 即可載入。這樣一來,即可移除 COEP 限制。
範例:
<iframe credentialless src="https://example.com">
這個 iframe 是在新的暫時性內容中建立,因此無法存取與頂層網站相關聯的任何 Cookie。而是從空的 Cookie Jar 開始。同樣地,儲存空間 API (例如 LocalStorage、CacheStorage、IndexedDB 等) 也會在新的暫時性區隔中載入及儲存資料。此區隔的範圍涵蓋目前的頂層文件和 iframe 來源。頂層文件卸載後,系統會清除所有這類儲存空間。
無憑證 iframe 不受 COEP 嵌入規則的約束。這些 cookie 仍是安全的,因為每次都是從新的空白內容載入,因此不應包含攻擊者所需的個人化資料。如果 iframe 只包含公開資料,對攻擊者來說就沒有價值。
示範
您可以查看無憑證 iframe 的示範。
常見問題
其他瀏覽器會採用這項功能嗎?
<iframe>
是否已巢狀在 <iframe credentialless>
無憑證的內容中?
可以。這是繼承的。一旦 iframe 為無憑證狀態,即使沒有 credentialless
屬性,也會套用至整個子樹狀結構中的所有 iframe。
是否也能透過 <iframe credentialless>
無憑證建立彈出式視窗?
彈出式視窗會以 noopener
的設定開啟。這些服務會在新的一般頂層內容中建立,並非無憑證。無法與無憑證 iframe 通訊。
如何偵測文件已嵌入無憑證 iframe?
window.credentialless
在無憑證 iframe 內為 true,否則為 false。在不支援 <iframe credentialless>
的網路瀏覽器中,其值為 undefined
。