自 Chrome 135 起,新的沙箱 allow-same-site-none-cookies 值

Natalia Markoborodova
Natalia Markoborodova

自 Chrome 135 起,您可以使用新的 sandbox 值:allow-same-site-none-cookies。指定這項政策後,如果無法使用第三方 Cookie,瀏覽器只會在來自第一方沙箱 iframe 的 HTTP 要求中傳送 SameSite=None Cookie。

什麼是沙盒化 iframe?

沙箱 iframe 是設有特殊限制的 iframe。系統會將這些屬性視為具有 null不透明來源。根據預設,沙箱 iframe 中不支援可能有害的功能,例如指令碼、表單和彈出式視窗。

使用 sandbox 屬性指定沙箱 iframe 應具備哪些功能。例如:

 <iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>

使用沙箱功能一向是個好主意,因為您可以精細地選取嵌入內容需要的權限,確保內容順利載入,同時限制潛在的漏洞利用範圍。

為什麼需要這項新政策?

allow-same-site-none-cookies 推出之前,您可以在沙箱 iframe 中設定兩種 Cookie 情況:

  • 如果 sandbox 屬性中沒有 allow-same-origin 權杖,iframe 的來源會以 null 序列化,導致沙箱頁面中的所有要求都屬於跨網站。在這種情況下,要求中只會包含含有 SameSite=None 的 Cookie。
  • 使用 sandbox 屬性中的 allow-same-origin 權杖,系統會將要求視為來自 iframe 的實際來源,允許傳送任何 SameSite 值的 Cookie。

在封鎖第三方 Cookie 的情況下,如果沙箱 iframe 缺少 allow-same-origin,就無法傳送任何 Cookie,除非您啟用 allow-same-site-none-cookies

即使第三方 Cookie 遭到封鎖,含有 allow-same-origin 的 iframe 仍可在同網站要求中加入 Cookie。不過,整個來源的 Cookie 罐都會暴露於潛在的惡意網路活動。

使用 allow-same-site-none-cookies 時,iframe 可以在 HTTP 要求中傳送 SameSite=None Cookie,但不會包含可能含有敏感資訊的 SameSite=StrictSameSite=Lax Cookie。

實際範例

請考慮 practice-coding.example 網站,該網站可讓使用者建立及執行自訂程式碼專案,並嵌入其他使用者的程式碼。使用者必須登入才能使用這項服務,因此系統會設定 SameSite=Strict 工作階段 Cookie。

另一位使用者建立了 practice-coding.example/cookie-theft 專案,其他使用者可能會在自己的專案中以 iframe 形式嵌入該專案。如果 SameSite=StrictSameSite=Lax Cookie 暴露在 practice-coding.example/cookie-theft iframe 中,惡意使用者可能會竊取其他使用者的 Cookie。

在這種情況下,網站擁有者可能會想限制存取可能含有機密資訊的 Cookie。不過,他們可能仍想在沙箱 iframe 中允許 SameSite=None Cookie。舉例來說,practice-coding.example/coding-interview 沙箱 iframe 可能需要 SameSite=None Cookie,才能讓應試者查看自己的程式碼。allow-same-site-none-cookies 可防止公開整個 Cookie 罐,同時有選擇地允許必要的 SameSite=None Cookie。

如何只允許在第一方沙箱框架中使用 SameSite=None

如要在第一方沙箱網頁的請求中啟用 SameSite=None Cookie,請在 iframe 標記中指定 allow-same-site-none-cookies 符記。例如:

 <iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>

您也可以使用 Content-Security-Policy HTTP 標頭設定 allow-same-site-none-cookies 政策:

Content-Security-Policy: sandbox allow-same-site-none-cookies;

歡迎試用我們的示範

互動及分享意見回饋

如要提供意見回饋或回報問題,請提出問題,或是加入 GitHub 上的討論