有没有办法让一个合理安全的系统投票而无需登录。我现在使用cookie来设置此人是否已投票,并在数据库中插入用户IP。
如果该用户删除了他的cookie,他将能够再次投票。这就是我检查用户的ip是否存在于数据库中以及该IP是否在过去30秒内投票的原因。这样他就不得不删除他的cookie并更改他的IP地址再次投票。
我知道没有100%的防故障解决方案,但是 有更安全的方法吗?
答案 0 :(得分:4)
有两种方法可以改善您的结果,但如果您需要,可以自己阅读和判断:
有Evercookie project,它可以在很多地方存储类似Cookie的信息。删除比普通的cookie要困难得多。
我个人认为这个项目应该被视为概念证明,实际使用它是不道德的
您可以使用浏览器指纹识别,而不仅仅是查看IP地址以识别返回的访问者。 EFF用他们的Panopticlick project表明,浏览器版本,操作系统版本,安装附加组件等的组合通常是独一无二的。 Piwik web analytics tool也使用这种用户启发式方法来区分访问者。我不知道实现,但它是FOSS和PHP,所以你应该能够找到那个部分。
答案 1 :(得分:1)
您可以同时使用这两种解决方案 - 但它仍然不是很安全。你可以阻止一个子网进行投票(192.168.1.xxx)以防止动态IP更改,但是你也可以阻止多达254人投票 - 而且它不会阻止代理。 / p>
我看到的一种方法使用了很多让你看起来像是允许重复投票;即:在最终用户端显示他们的重复投票已计算在内,但实际上并没有在您自己的数据库中计算。
但实际上,登录系统是关于这种做法的唯一相对“安全”的方式 - 但如果有人足够坚定,那显然也可以玩游戏。
希望这有帮助。
答案 2 :(得分:0)
你可以广告 用户代理(在短时间内,2名冲浪者几乎没有机会完全相同:https://panopticlick.eff.org/index.php?action=log&js=yes) 但又一次'如果某人足够坚定,那显然也可以被游戏化。'