【问题标题】:Is there a reliable way to prevent cheating in a web based contest where anonymous users can vote?在匿名用户可以投票的网络竞赛中,是否有可靠的方法来防止作弊?
【发布时间】:2008-09-11 05:12:42
【问题描述】:

我正在开展一项基于网络的比赛,该比赛本应允许匿名用户投票,但我们希望防止他们多次投票。基于 IP 的限制可以通过匿名代理绕过,用户可以清除 cookie,等等。可以使用 Silverlight 应用程序,它可以访问隔离存储,但用户仍然可以清除它。

如果没有一些小丑用机器人或其他东西投票给自己,我认为不可能做到这一点。有想法吗?

【问题讨论】:

    标签: asp.net silverlight


    【解决方案1】:

    简短的回答是:不。更长的答案是:但你可以让它变得任意困难。我会做什么:

    • 投票需要解决验证码(尽可能避免自动投票)。为了更有效,我建议准备多种类型的简单验证码(如“选择与猫的照片”、“什么是 2+2”、“输入单词”等)并将它们都旋转一天中的时间和 IP,这应该会使自动系统无效(即,如果有人使用 IP A 创建一个机器人来解决验证码,这将在第二天变得无用,或者如果她/他将其分发到其他计算机/使用代理)
    • 当按 IP 过滤时,您应该小心考虑多个主机位于一个公共 IP 后面的情况(AFAIK AOL 通过几个 IP 代理所有客户 - 因此这样的限制将有效地禁止 AOL 用户)。此外,许多代理会发送指向原始 IP 的标头(例如 X-Forwarded-For),因此您也可以查看一下。
    • 最后,使用 FSO(Flash 共享对象 - “Flash cookie”)之类的东西对于 99.99% 的人来说已经够晦涩难懂了。 Silverlight 更加晦涩难懂。更狡猾的是,您可以购买另一个域并从该域设置 FSO(因此,如果用户正在寻找您的域设置的 FSO,他们将看不到任何内容)

    这些方法都不是 100%,但希望它们结合起来可以为您提供所需的保证水平。如果您想更上一层楼,您需要添加某种用户注册(这可以简单到在投票发生时询问有效的电子邮件地址并向给定地址发送确认链接而不计算未点击链接的投票 - 因此它不需要是完整的“使用用户名/密码/名字/姓氏/等创建帐户”。

    【讨论】:

      【解决方案2】:

      不,你不能,只需要一个人和一个愿意的论坛到change the outcome of an online vote

      您必须意识到在线投票的固有缺陷,而不是试图绕过它们,而是尝试利用它们为您带来优势。

      -亚当

      【讨论】:

        【解决方案3】:

        你当然可以让它变得困难。

        如何使用诸如 IP 地址、浏览器用户代理、机器名称以及您可以获得的任何其他信息等内容构建用户配置文件。

        存储每个用户的个人资料,然后如果您收到的个人资料与数据库中已有的个人资料足够相似(您必须对其进行调整),您可以放弃该投票。

        我想您可能可以使用 silverlight 建立更好的个人资料,但我不确定您可以访问哪些信息。

        【讨论】:

          【解决方案4】:

          由于您列出的原因,客户端解决方案无法使用——它们可以由用户操作。服务器端解决方案——正如你所说——可以被愚弄和绕过。

          如果您愿意接受这样一个事实,即您不能 100% 确定每人只获得一票,那么您可以采取一些措施来减少噪音。

          • 在您的投票提交表单中使用验证码,让机器人和脚本更难投票。
          • 将每个 IP 地址的投票数限制为一。
          • 考虑要求注册才能投票。 (我知道这否定了您最初的问题的一部分,但它使您对投票有更大程度的控制。)

          这是一个好的开始。

          【讨论】:

            【解决方案5】:

            我在竞赛开发和监控方面的个人经验告诉我,不,如果您让匿名用户投票(或做任何让他们参与竞赛的事情),没有可靠的方法可以避免作弊。

            你可以玩 IP,在一个动作和下一个动作之间引入延迟,但这真的很困难:最好的方法是引入验证码或类似的东西,如果适用于你的特定情况。

            最重要的是,不要让匿名用户参与:让他们“玩”并访问模拟,但比赛需要登录。

            【讨论】:

              【解决方案6】:

              不,这是用户的计算机,他们可以控制。 不幸的是,唯一的解决方案就是将其带回您的球场并要求身份验证。

              但是,CAPTCHA 至少有助于将投票限制为人类用户。

              当然,即使使用身份验证,您也不能强制执行单一投票,因为它们会教机器人注册...

              【讨论】:

                【解决方案7】:

                我不得不同意简短的回答是否定的……不过,如果您在这里查看我最近的回答:How to anonymously identify a user and store that information,您当然可以在 6% 的误差范围内得到它。

                【讨论】:

                  猜你喜欢
                  • 2011-10-28
                  • 2011-04-04
                  • 1970-01-01
                  • 2011-01-20
                  • 2016-05-26
                  • 1970-01-01
                  • 2021-09-07
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多