接着这个帖子: http://ruby-china.org/topics/7749#reply18
第一方 cookie 和第三方 cookie
第一方 cookie 就是当前域种的 cookie,而第三方 cookie 是指你在浏览的网页里内嵌第三方的 iframe,iframe 域种的 cookie。
这里需要说明一下,像 Google Analytics 使用的是第一方 cookie,原理同 JSONP。普通浏览器很难阻止。可以通过把 http://www.google-analytics.com
加到 hosts 里面的办法来防止被跟踪。
evercookie
理论上跟踪用户需要满足两个条件:
- 可以在客户端自动回传
- 可以在客户端存储
其中,1 又不是必要的,因为可以通过 javascript 主动推送到服务端。
下面是 evercookie 使用的跟踪方式:
- Standard HTTP Cookies
- Local Shared Objects (Flash Cookies)
- Isolated Storage Silverlight
- Storing cookies in RGB values of auto-generated, force-cached PNGs using HTML5 Canvas tag to read pixels (cookies) back out
- Storing cookies in and reading out Web History
- Storing cookies in HTTP ETags
- Storing cookies in Web cache
- window.name caching
- Internet Explorer userData.aspx) storage
- HTML5 Session Storage
- HTML5 Local Storage
- HTML5 Global Storage
- HTML5 Database Storage via SQLite
其中 Etags 和 PNG RGB 值的方式很有意思,防不胜防啊!据调查Hulu.com 就使用了 Etag 跟踪用户。