A traditional HTTP cookie is a relatively small amount of textual data that is stored by the user's browser. Cookies can be used to save preferences and login session information; however, they can also be employed to track users for marketing purposes. Due to concerns over privacy, all major browsers include mechanisms for deleting and/or refusing to accept cookies from websites.
The size restrictions, likelihood of eventual deletion, and simple textual nature of traditional cookies motivated Adobe Systems to add the Local Shared Object (LSO) mechanism to the Adobe Flash player. While Adobe has published a mechanism for deleting LSO cookies (which can store 100 KB of data per website, by default), it has met with some criticism from security and privacy experts. Since version 4, Firefox has treated LSO cookies the same way as traditional HTTP cookies, so they can be deleted together.
Evercookie is designed to make persistent data just that, persistent. By storing the same data in several locations that a client can access, if any of the data is ever lost (for example, by clearing cookies), the data can be recovered and then reset and reused.
Simply think of it as cookies that just won't go away.
Evercookie accomplishes this by storing the cookie data in several types of storage mechanisms that are available on the local browser. Additionally, if Evercookie has found the user has removed any of the types of cookies in question, it recreates them using each mechanism available.
An Evercookie is not merely difficult to delete. It actively "resists" deletion by copying itself in different forms on the user's machine and resurrecting itself if it notices that some of the copies are missing or expired. Specifically, when creating a new cookie, Evercookie uses the following storage mechanisms when available:
- Standard HTTP cookies
- Local Shared Objects (Flash cookies)
- Silverlight Isolated Storage
- Storing cookies in RGB values of auto-generated, force-cached PNGs using HTML5 Canvas tag to read pixels (cookies) back out
- Storing cookies in Web history
- Storing cookies in HTTP ETags
- Storing cookies in Web cache
- window.name caching
- Internet Explorer userData storage
- HTML5 Session Storage
- HTML5 Local Storage
- HTML5 Global Storage
- HTML5 Database Storage via SQLite
The developer is looking to add the following features:
- Caching in HTTP Authentication
- Using Java to produce a unique key based on NIC information.
- Vega, Tanzina (2010-10-10). "New Web Code Draws Concern Over Privacy Risks". The New York Times.
- "Samy Kamkar - Evercookie".
- "'Tor Stinks' presentation". The Guardian.
- "What are local shared objects?".
- "How to manage and disable Local Shared Objects".
- "Local Shared Objects -- 'Flash Cookies'".
- Mike Beltzner (2011-01-13). "Bugzilla entry 625495 - Clear Adobe Flash Cookies (LSOs) when Clear Cookies is selected in the Privacy > Custom > Clear History". Retrieved 2011-09-28.
Change to the "on close" firefox behavior to use the new NPAPI ClearSiteData API.
- Mike Beltzner (2011-01-13). "Bugzilla entry 625496 - Clear Adobe Flash Cookies (LSOs) when Cookies is selected in Clear Recent History". Retrieved 2011-09-28.
Change to the "clear recent history" firefox behavior to use the new NPAPI ClearSiteData API.
- "Samy Kamkar - Evercookie".
- "Evercookie source code". 2010-10-13. Retrieved 2010-10-28.
- "Schneier on Security - Evercookies". 2010-09-23. Retrieved 2010-10-28.
- "It is possible to kill the evercookie". 2010-10-27.