1. Evercookie

Evercookie是一个Javascript API,可以在浏览器中生成极其持久的cookie。 它的目标是在客户删除标准cookie,Flash cookie(本地共享对象或LSO)等之后识别客户端。

2. 实现原理

Evercookie是通过将cookie数据存储在尽可能多的浏览器存储机制上来实现的。 如果从任何存储机制中删除cookie数据,只要一个仍然完好无损,evercookie就会在每个机制中积极地重新创建它。

如果Flash LSO,Silverlight或Java机制可用,Evercookie甚至可以在同一客户机上的不同浏览器之间传播cookie!

3. 浏览器存储机制

客户端浏览器必须支持尽可能多的以下存储机制才能使Evercookie有效:

a. Standard HTTP Cookies
b. Flash Local Shared Objects
c. Silverlight Isolated Storage
d. CSS History Knocking
e. Storing cookies in HTTP ETags (Backend server required)
f. Storing cookies in Web cache (Backend server required)
g. HTTP Strict Transport Security (HSTS) Pinning (works in Incognito mode)
h. window.name caching
i. Internet Explorer userData storage
j. HTML5 Session Storage
k. HTML5 Local Storage
l. HTML5 Global Storage
m. HTML5 Database Storage via SQLite
n. HTML5 Canvas - Cookie values stored in RGB data of auto-generated, force-cached PNG images (Backend server required)
o. HTML5 IndexedDB
p. Java JNLP PersistenceService
q. Java exploit CVE-2013-0422 - Attempts to escape the applet sandbox and write cookie data directly to the user’s hard drive.

4. 后端服务器

某些存储机制需要后端服务器。 该软件包附带了etag,cache和png后端服务器的PHP实现。

5. 缺点或注意事项

a. CSS历史记录首次设置cookie时,可能会导致大量HTTP请求。
b. 一些存储机制涉及在客户端浏览器中加载Silverlight或Flash。 在某些机器上,这可能是一个非常缓慢的过程,会严重影响性能。 在较旧的移动设备上,这可能会使您的网站无法使用.
c. 浏览器供应商正在尽最大努力填补Evercookie利用的许多漏洞。 这对互联网来说是一件好事,但这意味着今天有效的方法明天可能效果不佳。

参考资料: https://github.com/samyk/evercookie

Evercookie的更多相关文章

  1. 前端持久化--evercookie

    引言: 前端持久化就是要将数据永久的保存在前端,让数据难以删除或者删除后能够重新恢复.存储的数据可以理解为是一种 “僵尸数据”,下面介绍一种前端持久化方法 -- evercookie. 一.everc ...

  2. cookie窃取和session劫持

    Updates 2014-08-17 感谢@搞前端的crosser的提醒,加入了HTTP Response Splitting的内容. 此篇文章的Presentation戳这里. 一.cookie的基 ...

  3. 浏览器cookie数

    <?php for ($w=0; $w < 200 ; $w++) { setcookie('name'.$w,'value'.$w, time()+3600*10 ); } var_du ...

  4. laravel小抄

    原文地址:http://cheats.jesse-obrien.ca/ Artisan // Displays help for a given command php artisan --help ...

  5. Laravel Cheat 表 http://cheats.jesse-obrien.ca/#

    Laravel Cheat Sheet Toggle Code Comments PDF Version Github Laravel 3 Docs Laravel 4 Docs Artisan ph ...

  6. [转]取代cookie的网站追踪技术:”帆布指纹识别”初探

    [前言] 一般情况下,网站或者广告联盟都会非常想要一种技术方式可以在网络上精确定位到每一个个体,这样可以通过收集这些个体的数据,通过分析后更加精准的去推送广告(精准化营销)或其他有针对性的一些活动.C ...

  7. 笔记整理--Http-Cookie

    如何设置一个永远无法删除的Cookie -- 系统架构 -- IT技术博客大学习 -- 共学习 共进步! - Google Chrome (2013/6/20 9:46:38) 如何设置一个永远无法删 ...

  8. 浏览器存储(cookie、localStorage、sessionStorage)

    互联网早期浏览器是没有状态维护,这个就导致一个问题就是服务器不知道浏览器的状态,无法判断是否是同一个浏览器.这样用户登录.购物车功能都无法实现,Lou Montulli在1994年引入到web中最终纳 ...

  9. web API简介(二):客户端储存之document.cookie API

    概述 前篇:web API简介(一):API,Ajax和Fetch 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据.document.cook ...

随机推荐

  1. common-jdbc:一个基于SpringJdbcTemplate的高性能数据库操作工具类库

    项目地址:https://gitee.com/cnsugar/common-jdbc 一.简介 基于SpringJdbcTemplate的高性能数据库操作工具类库,支持mysql.oracle数据库, ...

  2. 键盘按键keyCode大全,js页面快捷键

    字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L 76 U 85 3 ...

  3. jQuery Custom PopUp Window

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. Word中划线的方法(五种)

    Word中划线的方法(五种): 1. 按CTRL+F9,在出现的黑底花括号内,如图输入内容, 最后按SHIFT+F9(或者右键菜单点切换域代码),以后可以反复按ALT+F9在代码与结果之间切换. 注: ...

  5. Android 判断当前Fragment是否可见(Visible)

    判断当前Fragment是否可见 public abstract class BaseFragment extends Fragment { /** Fragment当前状态是否可见 */ prote ...

  6. Ubuntu(Debian)apt-get

    Ubuntu(Debian)的aptitude与apt-get的区别和联系   最近在使用Puppet快速部署Openstack,看到一些没见过的工具,例如aptitude,在Ubuntu上有强大的a ...

  7. Siebel Tools配置

    默认安装的Siebel+Tools,Tools登陆时有3个选项:Local.Sample.Server,具体涵义如下: Local:指本地数据库.按照Siebel开发建议,开发人员需要从Siebel ...

  8. 签名&加密的区别

    https://www.zhihu.com/question/27669212/answer/38037256 就拿A给B发送经过签名加密信息来说: 1.A对信息签名的作用是确认这个信息是A发出的,不 ...

  9. zookeeper的JavaAPI

    org.apache.zookeeper.Zookeeper Zookeeper 是在 Java 中客户端主类,负责建立与 zookeeper 集群的会话,并提供方法进行操作. org.apache. ...

  10. Java框架安全

    (一)Mybatis注入问题 Mybatis是目前比较常用的ORM的框架,一般与SpringMVC框架整合较多,但使用不当会有SQL注入的风险. Mybatis里mapper中SQL语句的写法支持两种 ...