Cookie 的工作原理 - 赋予 Web「记忆」的技术

HTTP 本质上是一种无状态协议。服务器每次收到请求时,都无法知道这是来自谁的第几次访问。1994 年,Netscape 公司的工程师 Lou Montulli 为了解决这个问题而发明了 Cookie。

Cookie 是服务器通过 Set-Cookie 头部发送给浏览器的小型文本数据,浏览器在后续请求中会自动将该数据作为 Cookie 头部附加发送。这使得登录状态保持、购物车保存、语言设置记忆等「状态保持」成为可能。

Cookie 虽然是一项便利的技术,但也被广泛用作追踪手段,从隐私角度来看已成为全球监管的对象。

第一方 Cookie 与第三方 Cookie

Cookie 根据发行方的域名分为两类。这一区分正是隐私问题的核心所在。

类型 发行方 主要用途 隐私风险
第一方 正在访问的网站本身 登录保持、购物车保存、设置记忆 低(仅在该网站内有效)
第三方 与正在访问的网站不同的域名 广告追踪、数据分析、社交媒体组件 高(跨多个网站追踪行为)

例如,当你访问 shop.example.com 时,该网站设置的 Cookie 是第一方 Cookie。而页面中嵌入的广告网络 ads.tracker.com 设置的 Cookie 则是第三方 Cookie。由于广告网络向数百万个网站分发脚本,因此能够跨站追踪用户访问了哪些网站以及访问顺序。

Safari 自 2017 年推出 ITP(Intelligent Tracking Prevention)以来,默认屏蔽第三方 Cookie。Firefox 也通过 ETP(Enhanced Tracking Protection)实施了类似的对策。Chrome 长期以来一直预告将废除第三方 Cookie,但在 2024 年转变了方针,改为将选择权交给用户。

会话 Cookie 与持久 Cookie

Cookie 还可以按有效期进行分类。

会话 Cookie

未设置 ExpiresMax-Age 属性的 Cookie。关闭浏览器时会自动删除。用于登录会话管理和临时表单数据保持。从安全角度来看,比持久 Cookie 更安全,因为关闭浏览器后 Cookie 就会消失,降低了在共享电脑上的风险。

持久 Cookie

设置了 Expires(有效期日期时间)或 Max-Age(有效期秒数)的 Cookie。即使关闭浏览器,也会保留到指定的期限。「保持登录状态」复选框的背后,就是用长期有效的持久 Cookie 替代了会话 Cookie。

持久 Cookie 的有效期在 Chrome 中被限制为最长 400 天(2023 年以后)。在此之前可以设置数年后的日期,但为了抑制长期追踪而设定了上限。

SameSite 属性 - CSRF 防护的关键

SameSite 属性是控制 Cookie 是否在跨站请求中发送的机制。作为 CSRF(Cross-Site Request Forgery)攻击的对策于 2016 年引入,目前所有主流浏览器都已支持。

行为 用途
Strict 仅在同站请求中发送 Cookie 银行网站等需要高安全性的场景
Lax 顶级导航(链接点击)时发送,POST 或 iframe 中不发送 一般网站(Chrome 的默认值)
None 在所有跨站请求中发送 Cookie 第三方 Cookie(必须配合 Secure 属性)

自 2020 年起,Chrome 将未指定 SameSite 属性的 Cookie 视为 Lax。这意味着除非明确设置 SameSite=None; Secure,否则 Cookie 不会在跨站请求中发送。这一变更影响了许多 Web 应用程序,特别是使用 iframe 的支付表单和 SSO(单点登录)实现需要进行相应调整。

想要学习包括 Cookie 安全属性在内的 Web 技术基础,可以参考Web 技术入门书籍。

GDPR 与 Cookie 同意 - 为什么会出现同意横幅

欧盟的 GDPR(通用数据保护条例,2018 年生效)和 ePrivacy 指令规定,对欧盟境内用户使用 Cookie 时,必须事先获得明确同意。这就是每次访问网站时出现的 Cookie 同意横幅的由来。

GDPR 对同意的要求非常严格:

  • 事先同意(Opt-in):非必要 Cookie 在用户同意之前不得设置
  • 明确的选择:必须以与「全部接受」同等醒目的方式提供「全部拒绝」按钮
  • 细粒度选择:必须能够按 Cookie 类型(分析、广告、功能)分别同意或拒绝
  • 撤回的便利性:同意必须能够随时轻松撤回
  • 记录保存:有义务保存谁在何时同意了什么的记录

违规的罚款最高可达全球年营业额的 4% 或 2000 万欧元(取较高者)。2022 年,法国数据保护机构 CNIL 以 Cookie 同意不合规为由,对 Google 处以 1.5 亿欧元、对 Facebook 处以 6000 万欧元的罚款。

为什么会出现 Cookie 同意横幅一文中更详细地解释了各国法规的差异。也请一并查看广告追踪防护

删除 Cookie 会怎样

从浏览器设置中删除 Cookie 会产生以下影响:

  • 登录状态被重置:所有网站都会退出登录,需要重新登录
  • 购物车内容消失:电商网站购物车中的商品会丢失
  • 网站设置被重置:深色模式、语言设置、显示数量等自定义设置恢复为初始状态
  • Cookie 同意记录消失:Cookie 同意横幅会再次出现
  • 追踪被暂时重置:广告网络的用户画像被切断(但可能通过浏览器指纹重新关联)

与其全部删除 Cookie,不如只屏蔽第三方 Cookie 而保留第一方 Cookie,这是兼顾便利性和隐私的现实做法。Firefox 的「增强型追踪保护」和 Safari 的 ITP 正是采用了这种方式。

IP 确认酱可以查看包括浏览器 Cookie 设置状况在内的安全评分。定期检查,确认是否有不必要的 Cookie 积累。

本文相关术语

Cookie 网站存储在浏览器中的小型文本数据。用于保持登录状态和记忆用户设置,但也被用作追踪手段。 追踪 网站和广告网络追踪、记录用户在线行为的技术总称。包括 Cookie、指纹、像素等多种手法。 隐私 个人信息和行为不被违背本人意愿收集和使用的权利。GDPR 和 CCPA 等法规加强了对包括 Cookie 在内的在线追踪的监管。