Cookie、localStorage、IndexedDB 的风险
网站可以在浏览器中保存信息。
代表性机制是 。此外还有 和 这样的存储区域。它们用于保存登录状态、设置、购物车、识别符、应用数据。
这是方便的机制,但在匿名性中会成为强关联材料。
即使改变 IP 地址,只要发送的是同一 Cookie,就会被当作同一浏览器。即使用 或 ,如果使用和实名环境相同的存储区域,也会连接起来。
本文整理浏览器内存储区域与匿名性的关系。更详细的区别在“Cookie、sessionStorage 和 localStorage 的区别”中说明。
浏览器内的存储区域
Cookie、localStorage、IndexedDB 是网站在浏览器侧保存信息的机制。
| 存储区域 | 主要用途 | 匿名性上的注意点 |
|---|---|---|
| Cookie | 登录状态、会话、识别符 | 请求时会被发送 |
| localStorage | 设置、简单数据 | 可由 JavaScript 使用 |
| IndexedDB | 较大的应用数据 | Web 应用信息会残留 |
| sessionStorage | 标签页单位的临时保存 | 会话中的状态会残留 |
| Cache | 图片和脚本 | 成为浏览历史线索 |
这些机制让 Web 更方便。
但是,只要持续使用同一浏览器,行为就更容易被持续看到。
为什么在匿名性中成问题
匿名性中,问题在于同一使用者的行为被连接起来。
Cookie 和 localStorage 会制造这种连接。例如,在家里的 IP 看过某网站后,即使用 VPN 访问同一网站,只要发送同一 Cookie,就会被识别为同一浏览器。
| 情况 | 会发生什么 | 匿名性中的问题 |
|---|---|---|
| 只改变 IP | Cookie 仍照样发送 | 会知道是同一浏览器 |
| 实名登录后匿名浏览 | 存储区域残留 | 行为和实名环境连接 |
| 同一浏览器使用多个账号 | 保存状态混在一起 | 账号分离崩塌 |
| 使用 Web 应用 | 数据残留在 IndexedDB | 过去使用会残留 |
| 缓存残留 | 再访问和浏览物残留 | 成为终端内痕迹 |
VPN 和 Tor 会改变通信路径的可见方式。
浏览器内存储区域是另一个问题。
只删除 Cookie 有时不够
删除 Cookie 是有效的。
但是,如果 localStorage、IndexedDB、缓存、Service Worker 等还在,Web 应用状态可能残留。
| 残留内容 | 内容 | 注意点 |
|---|---|---|
| localStorage | 网站设置和识别符 | 只删除 Cookie 有时不会消失 |
| IndexedDB | Web 应用数据 | 会残留大量信息 |
| Cache | 已取得文件 | 成为浏览和使用痕迹 |
| Service Worker | 离线处理和通知 | 网站动作会继续 |
| 登录状态 | 服务侧会话 | 不只由浏览器一侧决定 |
匿名活动中,分开实名用浏览器和匿名用浏览器很重要。
比起每次靠删除处理,设计上不混在一起会更稳定。
要确认的事
处理浏览器内存储区域时,先想的不是删除什么,而是什么不能混在一起。
| 确认项目 | 理由 |
|---|---|
| 是否分开实名用和匿名用浏览器 | 避免存储区域混用 |
| 是否没有用实名和匿名进入同一网站 | 避免账号关联 |
| 是否确认 Cookie 以外的存储区域 | localStorage 和 IndexedDB 会残留 |
| 是否分开浏览器配置文件 | 扩展功能和历史也要分开 |
| 是否没有破坏 Tor Browser 标准设置 | 不因自定义设置变得显眼 |
高风险活动中,应考虑不仅分开浏览器,还分开 OS 用户、终端、通信路径。
优先分离而不是删除
Cookie 和存储区域也可以删除。
但是,每次完美删除的运用很容易崩。忘记删除、重新登录、其他网站存储区域、同步设置等都会导致混用。
| 方法 | 优点 | 注意点 |
|---|---|---|
| 每次删除 | 容易开始 | 会发生忘删和对象遗漏 |
| 不同浏览器 | 容易分开实名和匿名 | 扩展功能和设置也要分开 |
| 不同配置文件 | 可在同一浏览器内分离 | 需要避免误打开 |
| Tor Browser | 设计上抑制保存和识别 | 不要破坏标准设置 |
| 不同终端 | 可实现强分离 | 管理成本上升 |
低风险时,配置文件分离有时足够。
高风险时,要考虑分开到终端或 OS。重要的是根据威胁模型决定需要分到哪里。
常见失败
浏览器存储区域的失败,发生在熟悉的操作中。
| 失败 | 会发生什么 |
|---|---|
| 用平常浏览器匿名发帖 | 和实名 Cookie、历史混在一起 |
| 只打开 VPN | Cookie 仍照样发送 |
| 只登出就安心 | localStorage 和 IndexedDB 残留 |
| 使用同样扩展功能 | 浏览器环境相似 |
| 不关闭云同步 | 历史和设置扩散到多个终端 |
匿名性中,要同时确认通信路径和浏览器内状态。
匿名活动的基本方针
处理 Cookie 和存储区域时,以“不要混用”而不是“删除”为基本。
决定匿名活动用浏览器后,不在该浏览器中进入实名服务。不要在实名用浏览器中进入匿名账号。云同步和密码同步也要分开。这种简单运用,长期来看是强对策。
| 方针 | 含义 |
|---|---|
| 分开用途 | 不混用实名用和匿名用 |
| 确认同步 | 不把历史和设置扩散到其他终端 |
| 分开登录 | 避免账号关联 |
| 定期确认存储区域 | 不留下不必要数据 |
| 高风险时终端也分开 | 不只依赖浏览器分离 |
总结
Cookie、localStorage、IndexedDB 是网站在浏览器中保存信息的机制。
它们是方便功能,但在匿名性中会成为连接同一浏览器行为的线索。
即使改变 IP 地址,如果同一 Cookie 或存储区域还在,也可能被当作同一浏览器或环境。
匿名性中,要分开思考通信路径和浏览器存储区域。
不要混用实名环境和匿名环境,并根据需要使用专用浏览器或专用配置文件,这一点很重要。
相关工具
BrowserLeaks WebRTC
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
Tor Project
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。