【问题标题】:How to prevent the most number of cheaters for polls?如何防止最多的民意调查作弊者?
【发布时间】:2010-08-03 14:35:22
【问题描述】:

在我的网站上,我们运行一个竞赛系统,用户为其他用户的内容投票。我们最近发现有人创建多个帐户进行多次投票(连续的 ID 号,并在几分钟内投票)。我们希望防止这种情况再次发生。判断时代如何处理他们的“世纪最具影响力人物”民意调查,即使是大人物也弄错了。

目前我们记录用户 ID、投票日期和 IPv4 地址(通过 $_SERVER['REMOTE_ADDR'])。

我可以做些什么来防止或使某人更难进行欺诈性投票?

【问题讨论】:

    标签: php security


    【解决方案1】:

    需要用户信誉。如果您将投票权与必须具有一定声誉的用户相关联(即通过在一定时间内参与您的社区并提供有意义的内容),那么某人将越来越难以自动化创建多个身份的过程。

    最终,它是在充分的身份验证、易于访问和结果的价值(对您和用户而言)以及您呈现结果的方式之间取得平衡。

    【讨论】:

    • 我投票给你是因为这是一个很好的系统,但是投票给某人的能力也可能导致一个孤立的机器人社区成为事实上的“投票者”,因此让自己成为投票增加了他们自己的代表。
    • 谢谢。我投票支持你的评论来证明你的观点。 ;) 但重要的部分也是找到更多的客观价值来表达声誉,而不仅仅是其他用户的意见。例如,衡量您提供的内容质量的指标。
    • 我网站上的代表生成方式不同。机器人是可能的,但很困难。声誉是通过与系统交互产生的(即添加朋友、玩游戏等)。这可能会很好。
    • 就解决问题而言,这个答案就像是建议头痛的人使用断头台。所需的工作将很重要,并且会打开另一个完整的蠕虫罐(如 Organiccat 所述),并且缺少问题的基础知识,例如 cookie、IP 地址检查、sin-binning 等。我同意这个想法,但是应用程序不适合很多网站
    • 你当然可以尝试用十五种五颜六色的药丸来治愈脑癌。 ;) 我认为我们可以同意很大程度上取决于您设计网站的方法。但是,如果您必须以任何一种方式投资工作,最好不要只是乏味。
    【解决方案2】:

    使用 IPv4 地址,带有浏览器签名 ($_SERVER['HTTP_USER_AGENT']) 哈希。

    如果投票来自不同的用户,但使用相同的 IP 地址,使用相同的浏览器,在一个关闭的时间范围内,则可能是欺诈。

    如果时间太近,导致流程自动化,验证码会解决它(但没有人喜欢民意调查中的验证码)。

    【讨论】:

    • 我同意这里的每个人。没有办法真正防止欺诈,但有办法减轻。基于有效的电子邮件地址(带有确认步骤)强制执行有效用户帐户的其他建议。继续跟踪,在一个时间范围内使用 IPv4 和浏览器哈希。将用户投票限制为每次投票一次...增加一点复杂性的所有内容都有助于防止欺诈。
    • 我也想过这一点,但根据我的经验,同一 IP 上的大多数大型组织通常也具有相同的浏览器版本。如果他们在机器上确实有不同的浏览器,那么他们很可能能够安装其他浏览器来呈现用户代理检查,因为他们可以在该机器上打开另一个浏览器。
    • 不仅是大型组织,还有大学或公共网络。这是挑战的一部分。例如,在 IBM 内部,由于这个原因,几乎不可能从 rapidshare 免费下载一些东西。记录 User-Agent 的建议最有可能阻止自动化(例如,将 JMeter 与帐户数据源和 100x 循环一起使用,因为默认情况下 JMeter 不发送任何标头)。为了更好地理解这一点,我建议 Chris Shiflett 关于 PHP 安全性的文章。
    【解决方案3】:

    不幸的是,要防止欺诈性投票非常困难,有志者事竟成。然而,这一切都是为了尽可能不方便地欺骗系统。

    您的帐户是否需要一个唯一的电子邮件地址并经过验证才能使用该帐户?

    用户多久可以投票一次?如果您每天只能发送一次或一次电子邮件来验证投票,那么这对合法用户来说可能会很痛苦。

    不确定网站的规模,但是当您开始谈论非常大的网站(例如 Time's poll)时,仅通过查看 IP 地址就很难判断连续投票是否是假的。大学和办公室通常可以有数百人使用同一个 IP 地址。很难判断是一个人支持投票,还是一个人在宿舍楼里向他/她的所有朋友说要投票(可以解释来自同一 IP 地址的新注册/投票)同一时间)。

    这个问题确实没有答案,只要保持监控日志并删除看起来不合法的投票即可。

    【讨论】:

      【解决方案4】:

      正如您已经在做的那样,跟踪 IP 地址以及投票时间,并禁止在同一时间范围内来自同一 IP 的多次投票。这最多只会影响少数大学生。

      另一种更简单的安全投票方式是强制进行电子邮件注册和确认。一些机器人/垃圾邮件站点仍然可以通过拥有自己的域来解决此问题,但是您可以阻止该站点的域注册和投票。这是“最烦人”但最耗时的方法,因此与 IP 地址相结合,导致严重作弊的可能性最小。

      要记住的是,您不会阻止所有作弊者进入您的系统,但是您可以减轻它们。

      【讨论】:

        【解决方案5】:

        我会结合使用 IP 地址投票限制和 cookie。是的,cookie 可以被删除,但这会阻止恶意类型的人碰巧也是个白痴。

        IP 地址限制将检查来自该 IP 地址的人最近是否投票(例如 10 分钟,根据人口统计数据或大型组织在同一 IP 地址上投票的人数,您认为公平的任何时间)并停止投票计数。

        将这 2 项与您已经使用的用户 ID 结合起来,就可以做到尽可能多的实际操作。

        【讨论】:

          猜你喜欢
          • 2013-06-22
          • 2015-01-05
          • 2012-01-01
          • 1970-01-01
          • 2012-03-16
          • 1970-01-01
          • 2010-10-31
          • 2020-12-27
          • 1970-01-01
          相关资源
          最近更新 更多