【问题标题】:How can I prevent users from voting more than once in 1 hour?如何防止用户在 1 小时内多次投票?
【发布时间】:2011-09-10 04:58:33
【问题描述】:

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

但是,许多人正在使用代理来绕过这个投票限制,我想采用额外的保护。

我知道关于这个话题还有其他问题,但他们总是希望用户只能投票一次,而不是有时间限制。

感谢您的帮助

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

【问题讨论】:

    标签: php javascript cookies ip logging


    【解决方案1】:

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

    • 在用户计算机上放置 cookie
    • 记录他们的 IP
    • 将内容存储到本地存储中(仅适用于使用 HTML5 浏览器的用户)
    • 如果您真的想开始深入挖掘,您可以开始根据用户会话时长、他们在投票前浏览的页面数设置限制,即开始分析试图绕过系统的用户,并开始设置限制在那些被描述的用户上。

    【讨论】:

      【解决方案2】:

      您可以使用 cookie,但人们可以删除它们。不强制他们登录的最简单的答案(如果他们有多个电子邮件等,他们可以创建多个帐户),如果他们无法以某种方式偷偷摸摸,就很难限制他们。

      【讨论】:

      • 你也可以使用超级令人毛骨悚然的超级cookies,它们真的很难移除。他们使用 Flash cookie、本地存储、js cookie 等,很难摆脱它们。
      • 可能,但我相信一些浏览器也已经删除了这些(Opera i IIRC)
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          但是你可以做以下事情:

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

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-18
            • 1970-01-01
            • 1970-01-01
            • 2014-05-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多