Firefox 源代码文档 Logo

快速搜索

概述

  • 常用术语表
  • Mozilla 应用程序快速指南

入门

  • 设置 Firefox 代码库的工作环境

参与 Firefox 开发

  • 参与 Firefox 开发
  • Bug 处理

Firefox 用户指南

  • Firefox DevTools 用户文档

源代码文档

  • 治理
  • Firefox 前端
  • DOM
  • 编辑器
  • 样式系统 (CSS) & 布局
  • 图形
  • 进程、线程和 IPC
  • Firefox DevTools 贡献者文档
  • 工具包
    • JavaScript 日志记录
    • 附加组件管理器
    • 后台任务模式
    • 崩溃管理器
    • 崩溃报告器
    • 功能开关
    • 搜索服务
    • Shield Recipe 客户端
    • Nimbus
    • 消息系统模式
    • 画中画
    • 提示
    • 子进程模块
    • 遥测
    • Firefox on Glean (FOG)
    • 工具包模块
    • 工具包部件
    • 抗指纹识别
    • URL 分类器
    • WebExtensions API 开发
    • 管理内置的 en-US 词典
    • 应用程序更新
    • 反跟踪
      • 反弹跟踪保护
      • Cookie 清除
        • 保护背景
        • Firefox 状态
        • 技术信息
      • 数据净化
      • 查询剥离
      • 跟踪列表
    • 翻译
  • SpiderMonkey
  • GeckoView
  • Fenix
  • Focus for Android
  • WebIDL
  • libpref
  • 网络
  • 远程协议
  • 服务
  • 文件处理
  • Firefox on macOS
  • Firefox on Windows
  • Firefox AI 平台
  • 辅助功能
  • 代码质量
  • 编写 Rust 代码
  • Rust 组件
  • Gecko Profiler
  • 性能
  • 数据库绑定 (SQLite、KV 等)
  • XPCOM
  • NSPR
  • 网络安全服务 (NSS)
  • Gecko 中的 Web 安全检查

Firefox 构建系统

  • Mach
  • 推送到 Try
  • 构建系统
  • Firefox CI 和任务图
  • 管理文档
  • 引入第三方组件

测试 & 测试基础设施

  • 自动化测试
  • 理解 Treeherder 结果
  • 定期故障维护
  • 为新配置启用 Firefox 测试
  • 避免间歇性测试
  • 测试策略
  • 配置更改
  • 浏览器 chrome mochitests
  • Chrome 测试
  • Marionette
  • geckodriver
  • 测试验证
  • WebRender 测试
  • Mochitest
  • XPCShell 测试
  • TPS
  • web-platform-tests
  • GTest
  • 模糊测试
  • Sanitizer
  • 性能测试
  • 代码覆盖率
  • 测试 & 调试 Rust 代码

发布 & 更新

  • Mozilla 更新基础设施
  • Watershed 更新
  • 停止支持更新

本地化 & 国际化

  • 国际化
  • 本地化

Firefox 和 Python

  • mozbase
  • 使用第三方 Python 包

Firefox 中收集的指标

  • 指标
Firefox 源代码文档
  • 工具包
  • 反跟踪
  • Cookie 清除
  • 报告问题 / 查看页面源代码

Cookie 清除¶

“Cookie 清除”描述了一种技术,它会定期清除已知跟踪域的 Cookie 和站点数据,而无需用户交互,从而防止反弹跟踪。

保护背景¶

其他浏览器有哪些类似的保护措施?¶

Safari 将网站分类为重定向跟踪器,这些跟踪器会在导航过程中或导航后立即将用户重定向到其他网站。接收用户交互的网站不受此限制。为了检测更大的重定向网络,网站也可能继承重定向跟踪器分类。如果某个网站被归类为重定向跟踪器,则指向它的任何网站都将继承此分类。Safari 不使用跟踪器列表。

当源网站被归类为跟踪器时,Safari 将清除所有存储,Cookie 除外。在浏览器使用后 7 天内接收用户交互的网站不受此限制。如果目标网站的 URL 包含查询参数或 URL 片段,则 Safari 会将目标网站客户端设置的 Cookie 的生存期限制为 24 小时。

Brave 使用列表对重定向跟踪器进行分类。最近,他们推出了一种新的保护措施,不可链接的反弹,它限制了第一方存储的生存期。底层机制称为“第一方临时存储”。如果用户访问一个没有预先存在的存储的已知反弹跟踪器,浏览器将为目标网站创建一个临时第一方存储桶。此临时存储在用户关闭该网站的最后一个标签页后 30 秒内被清除。

Chrome 和 Edge 目前未实现任何导航跟踪保护。

它是否已标准化?¶

目前还没有标准化的导航跟踪保护。PrivacyCG 有一个基于导航的跟踪缓解工作项目。另请参阅 Apple 的提案此处。

它如何融入我们“零隐私泄露”的愿景?¶

现有的跟踪保护机制主要侧重于第三方跟踪器。重定向跟踪可以绕过这些机制,并利用第一方存储进行跟踪。Cookie 清除通过缓解这种跨站点跟踪向量,为“零隐私泄露”愿景做出了贡献。

Firefox 状态¶

元 Bug:Bug 1594226 - [Meta] 清除跟踪 Cookie

此保护措施在 Firefox 中的发布状态如何?¶

已发布到标准 ETP 模式下的版本

是否有未完成的工作?¶

通过 nsIPermissionManager 存储用户交互作为权限的机制已被证明是脆弱的,并且过去曾导致用户退出网站。权限的概念与用户交互标志的概念并不完全匹配。权限可能在正常浏览和 PBM 之间分开(Bug 1692567)。它们也可能在清除站点数据时被清除(Bug 1675018)。

对此提出的解决方案是创建一个专用的数据存储来跟踪用户交互。这还可以实现相对于浏览器使用时间而不是绝对时间的用户交互跟踪(Bug 1637146)。

重要的未解决 Bug

  • Bug 1637146 - 在计算是否清除 Cookie 时使用使用时间而不是绝对时间

现有文档¶

  • https://mdn.org.cn/en-US/docs/Web/Privacy/Redirect_tracking_protection

  • PrivacyCG:基于导航的跟踪缓解

技术信息¶

功能首选项¶

可以通过切换 privacy.purge_trackers.enabled 首选项来启用或禁用 Cookie 清除。此外,只有当 network.cookie.cookieBehavior 首选项设置为 4 或 5 时,它才会运行(bug 1643045 添加了对行为 1 和 3 的支持)。

可以通过 privacy.purge_trackers.logging.level 首选项设置不同的日志级别。

可以使用 privacy.userInteraction.expiration 首选项将用户交互权限过期时间设置为更短的时间。请注意,您必须在访问要测试的网站之前设置此首选项,它不会追溯应用。

它是如何工作的?¶

Cookie 清除会定期清除已知跟踪器的第一方存储,用户最近没有与这些跟踪器交互。它在PurgeTrackerService中实现,该服务实现了nsIPurgeTrackerService IDL 接口。

清除哪些来源?¶

如果来源满足以下条件,则将被清除

  1. 在过去 72 小时内存储了 Cookie 或访问了其他站点存储(例如 localStorage、IndexedDB 或 Cache API)。由于 Cookie 是按主机存储的,因此我们将清除 Cookie 主机的 http 和 https 来源变体。

  2. 来源在我们的跟踪保护列表中被归类为跟踪器。

  3. 没有与相同基础域 (eTLD+1) 具有用户交互权限的来源。

    • 一旦用户与来自该来源的顶级文档进行交互,此权限将授予该来源 45 天。“交互”包括滚动。

    • 尽管此权限存储在每个来源级别,但我们将检查是否有任何具有相同基础域的来源具有此权限,以避免破坏具有子域和相应 Cookie 设置的网站。

清除哪些数据?¶

Firefox 将清除以下数据

  • 网络缓存和图像缓存

  • Cookie

  • DOM 配额存储 (localStorage、IndexedDB、ServiceWorkers、DOM 缓存等)

  • DOM 推送通知

  • 报告 API 报告

  • 安全设置(即 HSTS)

  • EME 媒体插件数据

  • 插件数据(例如 Flash)

  • 媒体设备

  • 授予来源的存储访问权限

  • HTTP 身份验证令牌

  • HTTP 身份验证缓存

注意:即使我们清除了所有这些数据,我们目前只在来源使用 Cookie 或其他站点存储时才将其标记为要清除。

存储清除忽略来源属性。这意味着存储将在容器和隔离存储(即来自第一方隔离)之间清除。

数据清除的频率是多少?¶

Firefox 根据名为idle-daily的内部事件触发来清除存储,该事件由以下条件定义

  • 它最早将在上一个 idle-daily 事件触发后 24 小时触发。

  • 只有在用户空闲至少 3 分钟(在上次 idle-daily 触发后 24-48 小时)或 1 分钟(在上次 idle-daily 触发后超过 48 小时)时,它才会触发。

这意味着每次存储清除之间至少有 24 小时,并且只有在浏览器空闲时才会清除存储。在清除 Cookie 时,出于性能原因,我们会按创建日期对 Cookie 进行排序,并将它们批量分成 100 个集合(由 privacy.purge_trackers.max_purge_count 首选项控制)。

调试¶

出于调试目的,最简单的方法是通过浏览器控制台命令行直接触发服务来触发存储清除。请注意,这与您可能用于调试网站的普通Web 控制台不同,并且需要将 devtools.chrome.enabled 首选项设置为 true 才能交互使用它。启用浏览器控制台后,您可以通过运行以下命令触发存储清除

await Components.classes["@mozilla.org/purge-tracker-service;1"]
.getService(Components.interfaces.nsIPurgeTrackerService)
.purgeTrackingCookieJars()
上一页 下一页

使用 Sphinx 构建,并使用 主题,该主题由 Read the Docs 提供。