防止重复的匿名投票

时间:2012-11-28 06:23:16

标签: jquery comments rate vote

如何识别评论或文章的重复投票或评分? 例如,当您投票评论时,您不能再对该评论进行投票。

我希望用户可以投票评论,这个增量即将保存在db中,唯一要保存的是db中正负投票的增量。所有访问者都可以对评论进行投票,每个人只能投票一次。

是否有客户端解决方案?

4 个答案:

答案 0 :(得分:2)

基于cookie或localStorage的客户端解决方案将覆盖使用单个浏览器的诚实用户,这是大多数情况(因此您可能会这样做)。它不会做任何事情来防止任何有恶意和任何技术知识的人的欺诈行为,所以你还要在信任边界的另一边(在服务器上)包括一张支票。

坚定的攻击者能够填充投票箱,但您可以选择一些方法来阻止随意滥用。

正如其他人所提到的,一个简单的解决方案是允许每个IP地址一票。这不是一个可怕的想法,但请看这个讨论为什么它不是一个好主意:Limit 1 vote per IP Address?它可以阻止合法用户投票(考虑两个室友共享一个个人路由器),它不会停止选票填充(我可以在家里投票,然后又在工作中投票)。当你考虑像美国在线这样的互联网(因为流行的智慧,至少,我只是假设这仍然是真的)时,它会变得更加复杂,通常会重新分配地址(表面上可能是为了保护用户的隐私)。

您可能需要验证码。这提供了与需要经过验证的电子邮件地址类似的保护,同时对用户的负担稍微减轻。当然,这些方法都不是保证。拥有域名的任何人都拥有无限数量的独特工作电子邮件地址,如果几十张投票足以影响投票结果,那么攻击者只需要耐心就可以进行几十次验证码测试。

更复杂的解决方案是要求用户帐户,巧妙地观察滥用行为,并禁止涉嫌欺诈的帐户。不过,我猜这远远超出了你准备做的任何事情的范围。除非有人发布了这样一个免费的通用实现吗?

答案 1 :(得分:1)

用户可以在浏览器中禁用JavaScript,删除Cookie并轻松识别您的身份。这不是最好的解决方案。除此之外,最好在服务器端添加检查用户IP地址。

答案 2 :(得分:0)

我不认为饼干是保持投票有限的好方法。你可以清除它们并再次投票。可能最好的方法是只允许注册用户投票,然后在每篇文章的某个存储位置跟踪它们。当有人试图投票时,请检查文章的“投票赞成此数组的用户”,如果他们不在投票中,请允许投票通过。

答案 3 :(得分:-1)

确定。 另一个坏习惯。 试着欺骗一位匿名选民。当他第一次投票时 - 写入您的数据库+1和一个具有当前匿名用户额外投票金额的cookie。当他再次投票时,只需将+1添加到cookie数量,而不是添加到您的数据库并更新UI。因此,用户不知道他不能多次投票,也不会尝试清除他的cookie或其他东西。当然,您不能将此方法用于任何竞赛,仅用于统计。在您的情况下,您不应该为注册用户设置此cookie并使用标准方法来检查他们的投票。

相关问题