Evercookie(永遠刪不掉的cookie)

李鬆峰發表於2013-03-20

來自: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。

另見

相關文章