gpt4 book ai didi

php - 可怕的 Evercookie 和 CakePHP

转载 作者:可可西里 更新时间:2023-10-31 23:43:53 25 4
gpt4 key购买 nike

所以我正在尝试实现 evercookie在 cakePHP 网站上,但我得到了一些非常非常奇怪的结果。我刚刚将代码文件复制并粘贴到我的 app/webroot 目录中,我似乎没有收到任何 404 错误,但我的 cookies 没有保存——它们正在被重写每一次。更奇怪的是,当我加载页面时,它向 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 多个请求?我不知道为什么要这样做。比方说,如果网站上同时有 10 个用户(这并不令人难以置信),那就超过了 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
}
});

关于php - 可怕的 Evercookie 和 CakePHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com