可怕的Evercookie和CakePHP
发布时间:2020-12-13 22:30:07 所属栏目:PHP教程 来源:网络整理
导读:所以我试图在cake PHP网站上实现 evercookie,但是我得到了一些非常非常奇怪的结果.我刚刚将代码文件复制并粘贴到我的app / webroot目录中,我似乎没有得到任何404错误,但我的cookie没有保存 – 他们每次都被重写.甚至更奇怪的是,当我加载页面时,它向Google.co
所以我试图在cake
PHP网站上实现
evercookie,但是我得到了一些非常非常奇怪的结果.我刚刚将代码文件复制并粘贴到我的app / webroot目录中,我似乎没有得到任何404错误,但我的cookie没有保存 – 他们每次都被重写.甚至更奇怪的是,当我加载页面时,它向Google.com发送至少90个GET请求,并在Google Chrome中存储4-5个SQLite数据库; evercookie网站只存储一个.
我生成的HTML页面中的代码是这样的: var ec = new evercookie(); // set a cookie "id" to a random 10 character string // usage: ec.set(key,value) ec.set("id","vm5m172dyg"); // retrieve a cookie called "id" (simply) ec.get("id",function(value) { alert("Cookie value is " + value) }); // or use a more advanced callback function for getting our cookie // the cookie value is the first param // an object containing the different storage methods // and returned cookie values is the second parameter 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>"); } } ec.get("id",getCookie); // we look for "candidates" based off the number of "cookies" that // come back matching since it's possible for mismatching cookies. // the best candidate is most likely the correct one 这部分代码写入我的文档,这是输出(对我来说很好): Storage mechanism userData returned: undefined Storage mechanism cookieData returned: d9g6mfoo4y Storage mechanism localData returned: d9g6mfoo4y Storage mechanism globalData returned: undefined Storage mechanism sessionData returned: d9g6mfoo4y Storage mechanism windowData returned: d9g6mfoo4y Storage mechanism historyData returned: undefined Storage mechanism pngData returned: d9g6mfoo4y Storage mechanism etagData returned: d9g6mfoo4y Storage mechanism cacheData returned: d9g6mfoo4y Storage mechanism dbData returned: d9g6mfoo4y Storage mechanism lsoData returned: d9g6mfoo4y Storage mechanism slData returned: d9g6mfoo4y 我的问题是如何阻止发送给Google的90个请求?我不知道它为什么这样做.如果我在网站上有十个用户(这并不令人难以置信),那就超过了900(0).你有没有想过为什么每次刷新页面时cookie都会重置?这正是我想要阻止的. 解决方法
好吧,我不觉得傻!事实证明,代码开头的ec.set()调用是在每个页面加载开始时设置cookie.所以,我调整了一些东西,呃,它现在正在运作.而且我不再向Google发送90个请求.
// retrieve a cookie called "id" (simply) ec.get("id",function(value) { if(value == undefined){ // set a cookie "id" to a random 10 character string // usage: ec.set(key,value) ec.set("id","<?php echo $hash ?>"); } else { // do nothing } }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |