不使用 Cookie 的“Cookie”技術

oschina發表於2013-08-21

  有另一種方法可以跟蹤使用者而不使用cookies或Javascript。這種方法 已經被用於無數網站,但幾乎沒人人們知道。本頁解釋這種方法是如何運作的,以及是如何保護你自己的。

  這種跟蹤方式 無需使用:

  • Cookies
  • Javascript
  • LocalStorage/SessionStorage/GlobalStorage
  • Flash、Java或其他元件
  • 你的IP地址或是使用者代理字串(User Agent String )
  • 任何Panopticlick所使用的方式

  相反,它使用另一種儲存方式,在瀏覽器重啟的時候也可以保持永續性,這就是: caching

  即使你完全禁用cookies、關閉Javascript功能並且使用VPN,這種技術依然可以追蹤到你。

  線上示例:http://lucb1e.com/rp/cookielesscookies/

  我們繼續,輸入一些東西然後儲存。接著關閉你的瀏覽器再一次開啟這個頁面。它是不是還在那兒呢?

  檢查你的cookies,有沒有?當然沒有,因為它完完全全在一張假圖片的校驗和裡,幾乎沒人能意識到。看到頁面頂部右邊的眼睛了嗎?這就是我們的跟蹤器。

  那麼它是怎麼運作的呢?

  這是一張概覽圖

  圖片中的ETag是一種校驗和。當圖片改變時,校驗和也會改變。所以當瀏覽器有圖片並且知道校驗和時,它可以將校驗和傳送給web伺服器來驗證。然後web伺服器驗證圖片是否改變。如果沒有,就不用重新傳送圖片了,省下了不少資料流量。

  細心的讀者或許已經注意到,可以這樣追蹤人群:瀏覽器傳送回給伺服器的資訊就是它之前所接收到的(ETag)。這聽起來和cookies十分相似。伺服器可以給每個瀏覽器一個唯一的ETag,瀏覽器再次連線時ETag可以從資料庫中找出來。 本例的技術要點(以及bug)

  為了描述它是如何不必使用Javascript就可以生效的,我必須找一些專屬與你的資訊,ETag除外。圖片在頁面載入完後載入,但只有圖片包含ETag。我要怎樣在頁面上顯示實時資訊呢?結果是在不動態重新整理頁面的情況下,我不能做到這一點,但動態重新整理要用到Javascript,這又是我所想避免的。

  這個雞生蛋,蛋生雞的問題引出了一些bug:

  - 所有能見的資訊都是之前頁面載入的。只有按F5可以看到新的資料。

  - 當你瀏覽一個頁面而你沒有ETag的時(比如匿名模式),你的session會被清空。只有過載時才能再次看到。

  我沒見過有簡單的方案可以解決這些問題。當然事在人為,但不像其他網站,而且我想盡量保持程式碼簡單並貼近現實。

  注意在你真的要追蹤使用者時,這些bug一般不會存在。因為你不會想讓使用者知道他們在被追蹤。

  原始碼

  什麼專案沒有原始碼呢? 哦對,是微軟的Windows。

  https://github.com/lucb1e/cookielesscookies

  我們該怎麼去阻止它?

  有一個方法我強烈推薦你做的就是, 任何時候你想更安全的瀏覽一個網頁的話, 請開啟一個隱私瀏覽視窗, 並僅使用https連線方式。 這麼做能夠單方面地消除形如 BREACH (最新的https攻擊方式)攻擊的影響, 禁止任何可能會產生的追蹤cookie, 並且也能消除我在本頁面所展示的快取追蹤的問題的影響, 我在網上購物的時候會使用隱私瀏覽模式。 在 Firefox 下(我想IE應該也是)快捷方式是 Ctrl+Shift+P, 在 Chrome 下則是 Ctrl+Shift+N。

  除此以外, 這也取決於你的偏執級別。

  由於快取追蹤實際上無法被偵測, 所以當前我還沒有很直觀的解決方法, 更因為快取自身很有用(包括對你)並能夠節省時間和金錢。 網站管理員們將會消耗更少的頻寬(你可以想象一下, 終端使用者最終將為這份因為更多的頻寬而開具的賬單埋單), 你的網頁會更快載入, 尤其是在移動裝置上會更加明顯如果說你沒有辦理不限流量的4G套餐的話。 若你居住在有著高延遲, 低頻寬的農村地區, 那就更糟糕了。

  如果你非常疑神疑鬼,最好禁用所有快取。這會阻止任何追蹤的發生,但我個人認為得不償失。

  Firefox外掛Self-Destructing Cookies,能在你不使用瀏覽器一段時間後,清空你的快取。這也許是個不用禁用快取的好選擇;你 會在訪問時被追蹤,但他們通過看哪個IP訪問哪個頁面的方法早就做到了這一點,所以這種方法很合算。以後任何訪問都彷彿來自另一個使用者,如果所有其他的追蹤方式也已經被阻止。

  我不知道任何一款外掛可以定期刪除快取(比如每72小時一次),但也許有。這對99%的使用者來說會是個好主意,因為它限制追蹤功能的同時,對效能影響較小。

  更新: 我聽說Firefox外掛SecretAgent也使用ETag蓋寫來防止這種追蹤手段。如果你是根據域名來阻止追蹤,可以新增白名單來重新開啟快取。這款外掛可以阻止追蹤的功能已經得到確認SecretAgent的網站

  原文地址:http://lucb1e.com/rp/cookielesscookies/

相關文章