来自:Wikipedia, the free encyclopedia

Evercookie是一种JavaScript应用,可以在浏览器中产生难以删除的僵尸cookie。

背景

传统的HTTP cookie是由用户浏览器保存的少量文本数据。Cookie可以用于保存用户偏好设置或登录认证信息。但是,出于市场营销的需要,也可以利用cookie来跟踪用户。出于保护用户隐私的考虑,所有主流浏览器都内置了删除或拒绝从网站接收cookie的机制。

对传统cookie大小的限制、允许用户删除,以及只保存简单的文本数据,启发Adobe System在Adobe Flash Player中增加了LSO(Local Shared Object)机制。Adobe虽然公开了删除LSO cookie(默认每个站点可以保存100KB数据)的机制,但仍然有安全和隐私专家批评它。Firefox从第4版开始,也将LSO cookie与传统HTTP cookie一视同仁,让用户可以将它们一并删除。

简介

Samy Kamkar在2010年9月13日以开源形式发布了Evercookie的v0.4 beta版。根据该项目网站描述:

Evercookie的目的是为了让该持久保存的数据持久保存。把客户端可能用到的数据保存在几个不同的地方,可以在其中某些数据丢失时(比如,用户清除了cookie)再行恢复和重用。可以把它看成永远不会被删除的cookie。Evercookie是一个JavaScript API,通过它可以在浏览器中生成极其持久的cookie。它的目标就是在用户删除了传统cookie、Flash cookie(LSO)和其他缓存数据后,仍然可以识别客户端。Evercookie是通过利用浏览器不同的存储机制,把cookie数据保存在多个不同的地方实现的。此外,如果发现用户删除了其中一些cookie,Evercookie会利用这些机制重新创建它们。

Evercookie不仅仅是难删除,而是会积极“反抗”删除。方法就是在用户电脑里,利用不同的存储机制不断地复制自己,或者在副本丢失或到期作废时让自己重新复活。具体来说,Evercookie在创建cookie时会使用如下存储机制:

  • 标准HTTP cookie
  • Local Shared Objects (Flash cookie)
  • Silverlight Isolated Storage
  • 以自动生成、强制缓存的PNG像素图片的RGB值形式保存cookie,使用HTML5 Canvas标签读取像素图片(cookie)
  • 在浏览器历史记录中存储cookie
  • 在HTTP ETag中存储cookie
  • 在浏览器缓存中存储cookie
  • window.name缓存
  • Internet Explorer userData
  • HTML5 Session Storage
  • HTML5 Local Storage
  • HTML5 Global Storage
  • HTML5 Database Storage(SQLite)

开发人员计划增加如下功能:

  • HTTP Authentication缓存
  • 使用Java基于NIC信息产生唯一键

应用

Evercookie是常驻用户浏览器的理想营销工具,可以在用户计算机上长期收集“匿名”的浏览行为数据。利用它不仅可以收集各种浏览器数据,更重要的是,即使用户对浏览器cookie进行了大清洗,这些数据仍然可以起死回生。比如,利用它可以给特定的计算机建立一个长期有效的标识符,因为这个标识符唯一对应计算机上的某个账户,与之相关的数据也都指向一个人。利用这个工具,可以不经用户允许而跟踪用户,并取得与用户相关的各种cookie。因此,这个工具对用户上网隐私具有极大的潜在破坏力。

有证据表明,Hulu、AOL和Spotify等网站已经开始在自己的网站上使用EverCookies。

另见