First-Party Sets 測試操作說明

從 Chrome 108 開始,最新的第一方集合版本已可用於測試開發人員功能旗標。我們正積極開發第一方集合,目標是改用運送方式。因此,在 Chrome 111 於 3 月初 (2023 年 3 月 7 日) 推出之前,開發人員測試期間會納入意見回饋。

大環境的意見回饋指出,Chrome 停止支援第三方 Cookie 後,會影響第三方 Cookie 的跨網站使用情境。「第一方集合」提案旨在探討和解決一系列跨網站使用案例。在這類案例中,各個相依網站彼此間的關係,就可以讓瀏覽器代表使用者採取適當行動,並/或有效向使用者呈現這些資訊。

更新後的提案會使用兩個 API (Storage Access API 和暫定名為 requestStorageAccessForOrigin 的新 API) 為網站提供一種主動的方式,在第一方集合中針對他們的 Cookie 要求跨網站存取權。您可以按照下列操作說明,測試並驗證您想為網站建立的集合,以及呼叫這兩個不同 API 的正確要點。

第一方集合總覽

第一方集合 (FPS) 是一種網路平台機制,可讓開發人員宣告網站之間的關係,讓瀏覽器能使用這項資訊,針對特定的使用者用途啟用有限的跨網站 Cookie 存取權。在第三方情境中,Chrome 會依據這些宣告關係,決定何時允許或拒絕網站存取其 Cookie。

整體來說,第一方集合是由一組網域組成,其中有一個「主要集合」而且可能會有多個「設定成員」只有網站作者可以將網域提交至資料集,而且必須聲明各個「設定成員」之間的關係設為「設為主要項目」設定成員可以根據用途提供不同類型的網域類型。

為協助瀏覽器根據各子集的隱私權影響處理各子集的隱私權,建議使用 Storage Access API (SAA) 和 requestStorageAccessForOrigin 啟用 FPS 內的 Cookie 存取功能。

透過 SAA,網站可以主動要求跨網站 Cookie 存取權。如果要求網站和頂層網站都採用相同的每秒影格數,Chrome 就會自動核准要求。如要瞭解其他瀏覽器如何處理 SAA 呼叫,請參閱 Storage Access API (SAA) 文件

SAA 目前要求文件必須先取得使用者啟用,才能呼叫 API 的方法。

對於使用跨網站圖片或指令碼標記需要 Cookie 的頂層網站,這可能會導致採用 FPS 的困難。為了解決其中部分難題,我們提出了新的 API requestStorageAccessForOrigin,方便開發人員採用這項變更。這個 API 也可以用於測試。

設定提交內容

標準每秒影格數清單是 JSON 檔案格式的公開可視清單,儲存在新的 FPS GitHub 存放區中,可做為所有資料集的可靠資料來源。Chrome 將使用這個檔案套用到行為。

如要進一步瞭解提議的流程和規定,請參閱提交規範。你也可以嘗試提交一組設定,測試各種技術檢查來驗證提交內容。請注意,在 Chrome 穩定版提供 FPS 之前,系統會先清除所有提交的內容。

設定提交程序仍在開發階段,因此針對本機測試,您只能在指令列中建立集合,並直接傳遞至瀏覽器。進行本機測試時,不必提交一組到 GitHub 存放區,就能使用功能旗標進行測試。

如何在本機測試

必要條件

如要在本機測試 FPS,請使用透過指令列啟動的 Chrome 108 以上版本。

如要在 Chrome 新功能推出前搶先試用,請下載 Chrome Beta 版Canary 版

範例

google-chrome \
--enable-features="FirstPartySets,StorageAccessAPI,StorageAccessAPIForOriginExtension,PageInfoCookiesSubpage,PrivacySandboxFirstPartySetsUI" \
--use-first-party-set="{\"primary\": \"https://first-party-sets.glitch.me\", \"associatedSites\": [\"https://fps-member-1.glitch.me\"]}" \

進一步瞭解如何使用標記執行 Chromium

步驟

如要在本機啟用 FPS,您必須使用 Chrome 的 --enable-features 選項,並列出以半形逗號分隔的標記清單 (本節說明),並宣告一組相關網站做為 JSON 物件,以便傳遞至 --use-first-party-set

啟用每秒影格數

FirstPartySets 會在 Chrome 中啟用每秒影格數。

FirstPartySets
敬上

啟用 Storage Access API

StorageAccessAPI

在 Chrome 中啟用 Storage Access API (SAA),讓嵌入式 iframe 可在跨網站環境中使用 requestStorageAccess() 要求存取 Cookie,即使瀏覽器封鎖了第三方 Cookie。

請注意,在呼叫 requestStorageAccess() 時,必須透過使用者手勢解決問題。因為 SAA 規格仍在持續更新中,日後的 Chrome 版本可能會有不同的規定。如要查看 Chrome 預計將 SAA 實作程序提升哪些功能,請參閱這篇文章

StorageAccessAPIForOriginExtension

允許頂層網站使用 requestStorageAccessForOrigin(),代表特定來源要求儲存空間存取權。如果頂層網站需要使用需要 Cookie 的跨網站圖片或指令碼代碼,而且已解決採用 SAA 中的部分難題,這項做法就非常實用。

在本機宣告集合

第一方集合是一組網域,且其中有一個「主要組合」而且可能會有多個「設定成員」設定成員可以根據用途提供不同類型的網域類型。

建立內含集合成員網址的 JSON 物件,並將該物件傳送至 --use-first-party-set

在以下範例中,primary 會列出主網域,associatedSites 則會列出符合相關子集規定的網域。

{
     "primary": "https://primary.com",
    "associatedSites": ["https://associate1.com", "https://associate2.com", "https://associate3.com"]
}

範例:

--use-first-party-set="{\"primary\": \"https://first-party-sets.glitch.me\", \"associatedSites\": [\"https://fps-member-1.glitch.me\"]}"

針對本機測試,您只能在指令列中建立集合,並直接傳遞至瀏覽器。如果是本機測試,我們不會進行固定的驗證,但如果 FPS 採用穩定版,所有組合都必須提交至 FPS GitHub 存放區,且必須符合驗證條件。

啟用每秒影格數 UI

PageInfoCookiesSubpage

啟用從網址列存取的 PageInfo 部分中的 FPS。

PrivacySandboxFirstPartySetsUI

啟用 FPS UI:「允許相關網站查看您在群組中的活動」選項,然後前往「隱私權與安全性」→「Cookie 和其他網站資料」(chrome://settings/cookies)。

確認第三方 Cookie 已遭封鎖

  1. 在 Chrome 設定中,依序前往「隱私權與安全性」→「Cookie 和其他網站資料」或 chrome://settings/cookies。
  2. 在「一般設定」下方,確認「封鎖第三方 Cookie」
  3. 勾選「允許相關網站查看您在群組中的活動」子選項。

安全性考量

由於 Storage Access API 可讓網站在特定情況下重新取得第三方 Cookie 的存取權,因此網頁應用程式可能會容易受到跨網站攻擊和資訊外洩的影響。針對跨網站結構定義使用 Cookie 的網站,您應該瞭解 CSRF 和其他攻擊的風險。

預定改善措施

為改善這個情形,日後的 Chrome 版本將要求額外的安全控管措施,以便確實選擇加入這類機制。此提議改善方法:僅授予個別影格授予存取權、需要憑證要求 CORS,並且只將存取範圍設為來源。詳情請參閱近期安全性分析

請查看這份清單,瞭解 Chrome 實作 SAA 的過程。

請注意,Chrome 只會在與 Storage Access API 相關的跨網站嵌入環境中,傳送標示為 SameSite=None 的 Cookie。不過,除非所有瀏覽器都停止支援這些 Cookie 的預設存取權,否則無法假設 Cookie 的使用位置。請勿放心假定僅在每秒影格數內允許存取,而網站應繼續使用標準安全性最佳做法。

互動及分享意見回饋

本機測試可讓您試用 Storage Access API 機制啟用 FPS,並提供意見,或分享遇到的問題。此外,不妨在 GitHub 上測試集合提交流程,分享您在處理流程和驗證步驟方面的經驗。如要參與新提案並提供意見,請按照下列步驟操作: