首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建独立于浏览器的cookie?

如何创建独立于浏览器的cookie?
EN

Stack Overflow用户
提问于 2012-01-02 05:37:59
回答 3查看 1.5K关注 0票数 4
  • 我正在尝试建立一个投票系统,用户可以在这个网站上不注册就可以投票。
  • cookies依赖于浏览器,所以如果人们使用不同的浏览器(我想阻止他们这么做),可以投票不止一次(我不想有任何偏见)
  • 我读过埃弗曲奇是我可以用的东西。我看到的问题是调用似乎是异步的。例如

我做以下几件事

代码语言:javascript
复制
 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,刷新页面,然后返回值,所以我按以下顺序看到

代码语言:javascript
复制
cookie saved
cookie already set, returning

有人能帮我安装浏览器无关的cookie吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-02 05:48:53

你真的不应该使用那个图书馆。它在你的访问者浏览器中放了很多垃圾,非常不稳定(对我来说页面崩溃)。我认为它的存在是为了陈述一个案例,而不是在生产环境中使用。

而且,只需使用浏览器,而使用脚本(wget等),就可以轻松地工作。而不是。攻击者可以在这样的短时间内投下上百次票。

您应该将选票按IP地址保存在数据库中,并且每天只允许1票左右。这是安全性和可用性之间最常见的权衡。

票数 2
EN

Stack Overflow用户

发布于 2012-01-02 05:43:00

你不能只吃饼干就这么做。

Cookie是按浏览器存储的(有时甚至是每一个模式或每个会话),在任何情况下,用户都可以随意清除Cookies。

现在,埃弗曲奇试图通过许多不同的方式来存储数据,希望不是所有的数据都被同时清除。(也可以简单地通过禁用JavaScript、使用调试工具调整cookie或在运行中的值,或者使用非浏览器启动请求来绕过EC。)

无论如何,在使用EC方法时(根据人口结构,它可能有有限的成功,但它远非“防黑客”),只要设置一个大的“随机值”(如果没有设置值),并始终将该值发送到服务器。(由于服务器无法验证原始请求是否为“复制”,这是一种捕获-22,因此没有必要要求服务器提供一个名为“not”的请求。)

编码愉快。

票数 8
EN

Stack Overflow用户

发布于 2012-01-02 06:32:58

根据你对你想要实现的目标的描述,cookies将是一个非常非常糟糕的选择。并不是每个browser都是独立于浏览器的。而且,一旦用户清除了他们的cookie,每个cookie都是无用的。

存储ip地址服务器端是最接近获得您正在寻找的东西。但即便如此,也充满了挑战。许多公司的IT部门都会设置一些东西,这样来自他们网络的所有请求都将具有相同的外部ip。在这种情况下,即使有数千名员工(每个人都有自己的计算机),一旦网络上的一个人提交投票,同一网络上的任何其他用户都将被阻止这样做。同样的情况也适用于任何有ISP的家庭。

底线是,你想要的只是与互联网的核心架构背道而驰。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8697747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档