如何防止用户在1小时内多次投票?

时间:2011-06-07 15:45:34

标签: php javascript cookies ip logging

目前我有一个带有CAPTCHA的脚本,提交时会记录用户的IP地址,以防止用户每小时投票超过一次。

然而,很多人使用代理来绕过这个投票限制,我想采用额外的保护措施。

我意识到关于这个主题还有其他问题,但它们总是让那些希望用户只能投票一次的人,而不是时间限制。

感谢您的帮助

编辑:我不想强迫用户登录

5 个答案:

答案 0 :(得分:6)

没有100%安全的方法可以避免人们每小时投票超过一次,但这里有一些方法可以让用户更难以规避投票:

  • 将Cookie放在用户计算机上
  • 记录他们的IP
  • 将内容存储到localStorage中(仅适用于使用HTML5浏览器的用户)
  • 如果您真的想开始深入挖掘,可以根据用户会话长度,投票前导航的页数,即开始描述试图绕过系统的用户,并开始设置限制来开始设置限制对那些有特色的用户。

答案 1 :(得分:2)

您可以使用Cookie,但人们可以删除它们。最简单的答案,不强迫他们登录(如果他们有多个电子邮件等,他们可以创建多个帐户),如果没有他们能够以某种方式偷偷绕过它,将很难限制它们。

答案 2 :(得分:1)

访问10minutemail并复制电子邮件域并添加到列表中

答案 3 :(得分:0)

您是否反对让用户在您的网站上注册才能投票?我会说它是基于帐户,而不是IP。许多用户可以在NAT后面为他们分配所有相同的外部IP(想想工作或学校)。在这种情况下,我会说一个包含四列的表就足够了:用户ID,轮询ID,投票时间,选择。如果存在相同的用户ID /轮询ID组合且时间大于现在减去一小时,则不允许他们投票

答案 4 :(得分:0)

如果“坏”的人足够聪明,可以使用代理人投票反对你的意愿或规则,那么他们也有可能绕过其他保护......

但以下是你可以做的事情:

1)投票后在机器上设置cookie,但用户可以手动删除cookie

2)执行用户帐户投票,通过电子邮件地址验证,但用户可以创建备用用户帐户

2bis)用户帐户只能在24小时后才能获得投票权,可能不适合您的应用

3)与堆栈溢出一样,在用户帐户上实现信誉机制,这样他们只有在证明他们不仅仅是机器人或替代身份之后才能投票