问题描述
|
您如何处理公众投票(任何人都可以“喜欢或不喜欢”文章)并限制他只能投票一次?
我要使用Cookie吗? (存在他可以删除Cookie并投票x999次的问题)还是我将他的IP存储在数据库中?
解决方法
该解决方案包括三个部分:
使用Cookie防止出现双重投票
将所有投票事件存储在数据库中(ip,用户代理,民意调查/文章ID,投票)
实现一种算法,该算法每24小时运行一次,以删除从#1逃脱的双票。该算法将使用#2中的数据
仅使用IP是不合适的,因为它可能会使很多人脱离投票系统。
,使用IP。
虽然您可能导致一群人仅从一个IP后面投票一次,但是另一种选择是绕行(不存储cookie)很简单。
,我要说两个都做,以便如果有人拥有动态IP,他们将必须同时更改IP和删除Cookie。
,如果用户进行了身份验证,即他们自己投票,则在数据库中抛出一条记录,表明用户已经投票。对于匿名选民,您只能使用Cookie,本地存储等。
,代替cookie可以使用evercookie,这是很难(但仍然可以)绕过的方法。
evercookie是一个JavaScript API
可产生极大的
浏览器中的持久性cookie。它的
目标是确定客户
他们删除标准后
cookie,Flash cookie(本地共享
对象或LSO)等。