First-Party Set 测试说明

First-Party Set 的最新版本可供 Chrome 108 及之后的开发者功能标志测试。我们正在积极开发 First-Party Set,以期实现交付。因此,在 3 月初(2023 年 3 月 7 日)Chrome 111 发布之前,我们会考虑开发者测试这一阶段的反馈。

根据生态系统的反馈,系统突出显示了当 Chrome 不再支持第三方 Cookie 时会受到影响的跨网站使用情形。First-Party Set 提案检查和解决一类跨网站用例,在这些用例中,相互依赖的网站共享可向浏览器传达的关系,以便浏览器代表用户执行适当的操作和/或有效地向用户显示该信息。

更新后的提案使用两个 API(Storage Access API 和暂时名为 requestStorageAccessForOrigin 的新 API)为网站提供一种主动方法,用于请求对 First-Party Set 中的 Cookie 进行跨网站访问。以下说明可帮助您测试和验证您希望为网站创建哪些集合,以及调用这两种不同 API 的正确位置。

First-Party Set 概览

First-Party Set (FPS) 是一种网络平台机制,供开发者声明网站之间的关系,以便浏览器可以使用这些信息来启用有限的跨网站 Cookie 访问权限,实现面向用户的特定目的。在第三方环境中,Chrome 会根据这些声明的关系来决定何时允许或拒绝网站访问其 Cookie。

概括来讲,First-Party Set 是一系列网域的集合,其中有一个“设置主域名”和可能有多个“集成员”只有网站作者才能将其网域提交到某个资源集,并且他们需要声明每个“资源集成员”之间的关系设置为“set primary”集成员可以包含一系列不同的网域类型,以及基于用例的子集

为便于浏览器根据每个子集可能带来的隐私问题来处理每个子集,我们提议利用 Storage Access API (SAA) 和 requestStorageAccessForOrigin 以 FPS 的形式实现 Cookie 访问。

签署 SAA 后,网站可以主动请求跨网站 Cookie 访问权限。如果发出请求的网站和顶级网站的 FPS 相同,Chrome 会自动批准该请求。如需了解其他浏览器如何处理 SAA 调用,请参阅 Storage Access API (SAA) 文档

SAA 目前要求文档必须先获得用户激活,然后才能调用该 API 的方法。

对于使用跨网站图片或需要 Cookie 的脚本代码的顶级网站而言,这可能会使采用 FPS 变得非常困难。为了应对其中一些挑战,我们提出了一种新的 API requestStorageAccessForOrigin,让开发者能够更轻松地采用这项变更。此 API 也可用于测试。

设置提交内容

规范 FPS 列表将以 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\"]}" \

详细了解如何使用 flag 运行 Chromium

步骤

若要在本地启用 FPS,您需要结合使用 Chrome 的 --enable-features 选项和以英文逗号分隔的标志列表(本部分将介绍这些标志),并将一组相关网站声明为要传递给 --use-first-party-set 的 JSON 对象。

启用 FPS

FirstPartySets 在 Chrome 中启用 FPS。

FirstPartySets

启用 Storage Access API

StorageAccessAPI

在 Chrome 中启用 Storage Access API (SAA),以允许嵌入式 iframe 使用 requestStorageAccess() 在跨网站上下文中请求访问 Cookie,即使浏览器屏蔽了第三方 Cookie 也是如此。

请注意,在调用 requestStorageAccess() 时,需要用户手势才能解析。由于 SAA 规范仍在完善中,未来版本的 Chrome 可能会施加不同的要求。请点击此处,获取我们计划在 Chrome 中实现 SAA 的一系列改进。

StorageAccessAPIForOriginExtension

允许顶级网站使用 requestStorageAccessForOrigin() 代表特定来源请求存储空间访问权限。这对于使用需要 Cookie 的跨网站图片或脚本代码的顶级网站非常有用,并能够解决采用 SAA 时面临的一些挑战

在本地声明集

First-Party Set 是一系列网域的集合,其中有一个“主网域集”和可能有多个“集成员”集成员可以包含一系列不同的网域类型,以及基于用例的子集

创建一个 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 代码库并符合验证条件。

启用 FPS 界面

PageInfoCookiesSubpage

允许在可通过网址栏访问的 PageInfo 部分显示 FPS。

PrivacySandboxFirstPartySetsUI

启用 FPS 界面“允许相关网站查看您在该群组中的活动”选项,依次点击“隐私和安全”→“Cookie 及其他网站数据”(chrome://settings/cookies)。

验证是否已阻止第三方 Cookie

  1. 在 Chrome 设置中,依次前往“隐私和安全”→“Cookie 及其他网站数据”或 chrome://settings/cookies。
  2. 在“常规”设置下,确保“阻止第三方 Cookie”已启用。
  3. 检查子选项“允许相关网站查看您在该群组中的活动记录”也会启用

安全注意事项

由于 Storage Access API 可让网站在特定情况下重新获得对第三方 Cookie 的访问权限,因此可能会使 Web 应用容易受到跨网站攻击和信息泄露。在跨网站环境中依赖 Cookie 的网站应了解 CSRF 和其他攻击的风险。

计划的改进

为了改善这一点,未来发布的 Chrome 版本将要求提供额外的安全控制功能,以确保用户明确选择启用。我们提议的改进措施是:仅按帧授予访问权限,对凭据化请求使用 CORS,并保持对源的访问范围。如需了解详情,请参阅最近的安全分析

查看 Chrome 在实现 SAA 方面的计划改进列表

请注意,Chrome 仅在跨网站嵌入式上下文中发送标记为 SameSite=None 的 Cookie,这与 Storage Access API 相关。不过,在所有浏览器都弃用了对这些 Cookie 的默认访问权限之前,无法对 Cookie 的使用位置做任何假设。不要认为只有 FPS 内才允许访问,网站应继续采用标准安全最佳实践。

互动和分享反馈

在本地测试中,您可以试用 Storage Access API 机制来启用 FPS,并分享反馈或您遇到的任何问题。此外,您还可以借此机会在 GitHub 上测试设置提交流程,并分享您对该流程和验证步骤的经验。如需参与并分享对更新后的提案的反馈,请执行以下操作: