evercookie原理及使用方法示例

描述:

evercookie是一个可用的JavaScript API 浏览器中非常持久的cookie。它的目标 是在客户删除标准后识别客户 Cookie,Flash Cookie(本地共享对象或LSO),以及其他。

evercookie通过存储cookie数据来实现这一目标 可用的几种类型的存储机制 本地浏览器。此外,如果evercookie找到了 用户已删除任何类型的cookie,它 使用每种可用机制重新创建它们。

具体来说,在创建新cookie时,它会使用 以下存储机制:

- 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 and reading out 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

Evercookie旨在使持久性数据持久化。通过将相同的数据存储在客户端可以访问的多个位置,如果任何数据都会丢失(例如,通过清除cookie),数据可以恢复,然后重置和重用。简单地把它想象成不会消失的cookie.
如果用户删除了他们的cookie,只需要一个cookie来保留下来,
evercookie就会在每个机制中积极地重新创建它。如果用户在一个浏览器上进行浏览并切换到另一个浏览器,只要它们仍然具有本地共享对象cookie,即cookie将在两个浏览器中重现。
客户端是否必须安装任何东西?客户只是在不知道的情况下使用网站正在设置持久性数据,就像他们使用标准网站一样HTTP cookie。

后端服务器:

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

git地址:https://github.com/samyk/evercookie

破解方法:
就是删除历史记录后,一定不能在原窗口内刷新页面。一定要关闭当前窗口tab。然后新开tab里面,再次访问对应的evercookie,就可以看到并不能恢复cookie值了。这就是由window.name这个特殊的技术点,所决定的。

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

缺点和注意事项:

被警告!Evercookie可能会给您或您的用户带来问题。

  • 某些存储机制涉及在客户端浏览器中加载Silverlight或Flash。在某些机器上,这可能是一个非常缓慢的过程,有很多磁盘抖动。在较旧的移动设备上,这可能会使您的网站无法使用。

  • CSS历史记录首次设置cookie时,敲门可能会导致大量HTTP请求。

  • 在某些圈子里,使用Evercookie被认为是粗鲁的。在生产中使用Evercookie时,请考虑您的声誉和受众。

  • 浏览器供应商正在尽最大努力填补Evercookie利用的许多漏洞。这对互联网来说是一件好事,但它意味着今天有效的东西明天可能效果不好。

您自己决定使用Evercookie。做出明智的选择。

使用示例:

<html>
    <head>
        <title>我的网页</title>
        <script type ="text/javascript" src="./js/jquery.js"></script>
        <script type ="text/javascript" src="./js/swfobject-2.2.min.js"></script>
        <script type ="text/javascript" src="./js/evercookie.js"></script>
    </head>
    <body>
        <button id="open">点我</button>
        <script type ="text/javascript">
        $(document).ready(function(){
            $("#open").bind("click",function(){
                var ec = new evercookie();
                debugger;
                ec.set("id","12345");
                // ec.get("id",function(value){
                //     alert("cookid is "+ value);
                // });
                ec.get("id", getCookie);
            });

            function getCookie(best_candidate, all_candidates)
            {
                alert("The retrieved cookie is: " + best_candidate + "\n" +
                    "You can see what each storage mechanism returned " +
                    "by looping through the all_candidates object.");

                for (var item in all_candidates)
                    document.write("Storage mechanism " + item +
                        " returned: " + all_candidates[item] + "<br>");
            }
            
        });
        </script>
    </body>
</html>

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值