7. 隐私注意事项 (Privacy Considerations)
Cookie 经常因允许服务器跟踪用户而受到批评. 例如, 一些 "web analytics" 公司使用 cookie 来识别用户何时返回某个 Web 站点或访问另一个 Web 站点. 虽然 cookie 不是服务器可用于跨 HTTP 请求跟踪用户的唯一机制, 但由于 cookie 可以跨 user agent session 持久存在并可在主机之间共享, 它们使跟踪变得更容易.
7.1. 第三方 Cookie (Third-Party Cookies)
特别令人担忧的是所谓的 "third-party" cookie. 在渲染 HTML 文档时, user agent 通常会从其他服务器 (例如广告网络) 请求资源. 即使用户从未直接访问这些第三方服务器, 这些服务器也可以使用 cookie 跟踪用户. 例如, 如果用户访问了一个包含某第三方内容的站点, 随后又访问另一个包含同一第三方内容的站点, 该第三方就可以在两个站点之间跟踪用户.
一些 user agent 会限制第三方 cookie 的行为. 例如, 其中一些 user agent 拒绝在第三方请求中发送 Cookie 头部. 另一些则拒绝处理第三方请求响应中的 Set-Cookie 头部. 不同 user agent 的第三方 cookie 策略差异很大. 本文档给予 user agent 很大的自由度, 以试验能够平衡用户隐私和兼容性需求的第三方 cookie 策略. 但是, 本文档不认可任何特定的第三方 cookie 策略.
如果服务器试图绕过第三方 cookie 阻止策略的限制来跟踪用户, 这些策略往往无法有效实现其隐私目标. 特别是, 两个协作服务器通常可以通过将标识信息注入动态 URL, 在完全不使用 cookie 的情况下跟踪用户.
7.2. 用户控制 (User Controls)
user agent 应该 (SHOULD) 为用户提供一种机制来管理存储在 cookie store 中的 cookie. 例如, user agent 可以允许用户删除指定时间段内收到的所有 cookie,
或删除与特定 domain 相关的所有 cookie. 此外, 许多 user agent 包含一个用户界面元素, 允许用户查看存储在其 cookie store 中的 cookie.
user agent 应该 (SHOULD) 为用户提供禁用 cookie 的机制. 当 cookie 被禁用时, user agent 不得 (MUST NOT) 在出站 HTTP 请求中包含 Cookie 头部, 并且 user agent 不得 (MUST NOT) 处理入站 HTTP 响应中的 Set-Cookie 头部.
一些 user agent 为用户提供防止 cookie 跨 session 持久存储的选项. 当如此配置时, user agent 必须 (MUST) 将所有收到的 cookie 视为 persistent-flag 被设置为 false. 一些流行的 user agent 通过 "private browsing" 模式 [Aggarwal2010] 暴露此功能.
一些 user agent 为用户提供批准对 cookie store 的单次写入的能力. 在许多常见使用场景中, 这些控制会产生大量提示. 然而, 一些注重隐私的用户仍然认为这些控制有用.
7.3. 过期日期 (Expiration Dates)
虽然服务器可以将 cookie 的过期日期设置到遥远的未来, 但大多数 user agent 实际上不会将 cookie 保留数十年. 服务器不应选择无谓漫长的过期期限, 而应该 (SHOULD) 根据 cookie 的用途选择合理的 cookie 过期期限, 从而促进用户隐私. 例如, 典型 session identifier 的过期时间可以合理地设置为两周.