我做以下几件事
var ec = new evercookie
ec.get("id", function(value) {
alert("Cookie value is " + value);
if (value != null) {
alert('cookie already set, returning');
return;
}
ec.set("id", "12345");
alert('cookie saved');
});当我使用这段代码时,它首先设置cookie,刷新页面,然后返回值,所以我按以下顺序看到
cookie saved
cookie already set, returning有人能帮我安装浏览器无关的cookie吗?
谢谢
发布于 2012-01-02 05:48:53
你真的不应该使用那个图书馆。它在你的访问者浏览器中放了很多垃圾,非常不稳定(对我来说页面崩溃)。我认为它的存在是为了陈述一个案例,而不是在生产环境中使用。
而且,只需使用浏览器,而使用脚本(wget等),就可以轻松地工作。而不是。攻击者可以在这样的短时间内投下上百次票。
您应该将选票按IP地址保存在数据库中,并且每天只允许1票左右。这是安全性和可用性之间最常见的权衡。
发布于 2012-01-02 05:43:00
你不能只吃饼干就这么做。
Cookie是按浏览器存储的(有时甚至是每一个模式或每个会话),在任何情况下,用户都可以随意清除Cookies。
现在,埃弗曲奇试图通过许多不同的方式来存储数据,希望不是所有的数据都被同时清除。(也可以简单地通过禁用JavaScript、使用调试工具调整cookie或在运行中的值,或者使用非浏览器启动请求来绕过EC。)
无论如何,在使用EC方法时(根据人口结构,它可能有有限的成功,但它远非“防黑客”),只要设置一个大的“随机值”(如果没有设置值),并始终将该值发送到服务器。(由于服务器无法验证原始请求是否为“复制”,这是一种捕获-22,因此没有必要要求服务器提供一个名为“not”的请求。)
编码愉快。
发布于 2012-01-02 06:32:58
根据你对你想要实现的目标的描述,cookies将是一个非常非常糟糕的选择。并不是每个browser都是独立于浏览器的。而且,一旦用户清除了他们的cookie,每个cookie都是无用的。
存储ip地址服务器端是最接近获得您正在寻找的东西。但即便如此,也充满了挑战。许多公司的IT部门都会设置一些东西,这样来自他们网络的所有请求都将具有相同的外部ip。在这种情况下,即使有数千名员工(每个人都有自己的计算机),一旦网络上的一个人提交投票,同一网络上的任何其他用户都将被阻止这样做。同样的情况也适用于任何有ISP的家庭。
底线是,你想要的只是与互联网的核心架构背道而驰。
https://stackoverflow.com/questions/8697747
复制相似问题