如何防止在线比赛中作弊(加票)?

信息安全 验证 欺诈罪
2021-08-11 08:12:56

减轻在线比赛中的作弊和选民欺诈……

我们举办各种类型的在线竞赛,涉及用户对条目进行投票(通常每个用户每天投一票)。奖金从数百美元到数千美元不等。在过去的四年里,我们遇到了很多人试图作弊的方式,并且在每种情况下都采取了应对措施。就目前而言,我们使用以下措施:

身份验证
用户必须创建一个帐户并进行身份验证(登录)。这排除了匿名投票填充。

电子邮件确认
用户必须通过单击系统电子邮件中的链接来确认他们的电子邮件地址,以确认他们拥有并有权访问他们的地址。这排除了使用随机(不一定是有效的)电子邮件地址创建大量帐户的可能性。对于一个帐户,它还会稍微减慢该过程,如果您尝试创建多个帐户,则会减慢很多。

无 Gmail 地址别名
用户不能使用即时别名地址,例如 localpart+suffix@gmail.com。这减缓了潜在的作弊者。

其他措施
我们会定期审核来自同一私人域(user1@smithfamily.com、user2@smithfamily.com 等)的电子邮件地址字符串的注册和投票名单。我们还寻找跨域的电子邮件地址的相似名称、用户名和“本地部分”。

我们还每天显示投票结果更新,因此没有即时反馈。那样的话,如果有人想作弊,需要一天的时间才能看到结果,除非他们做得很大,否则他们将无法确定他们的方法是否成功。我们尽可能地成为一个“黑匣子”。

不用说,这一切都令人筋疲力尽,并且越来越难以扩大规模。我们需要一个更简单的解决方案,以确保我们在比赛中更接近“一人一票”,同时在此过程中不会给用户带来超出需要的负担。

我们已经探索了使用 SMS 将手机号码附加到帐户以验证此人的可能性;陪审团仍然在这种方法上:https : //ux.stackexchange.com/questions/15980/ways-to-avoid-online-contest-voting-fraud-is-sms-account-verification-too-much/,和灿短信被用来通过短代码体系,以验证一个人的独特的身份?.

一些建议包括使用信用卡、邮寄验证、信誉积分……但这些对我们的目标用户来说都太繁琐了。

我们还能在后端自动做些什么来 1)识别作弊者,更重要的是 2)防止他们作弊?


更新

我们决定不让我们的欺诈保护防泄漏,因为其中一位开发人员指出“你越难让人们作弊,就越难检测到作弊行为。” 取而代之的是,我们正在使用一种称为三边蝙蝠的中世纪中国狩猎技术。通过在大多数方面使作弊变得非常困难,但在其他方面相对容易通过,我们确切地知道在投票结果更新之前要寻找和消除什么。

我们寻找投票的模式,例如一个参赛者收到一连串定时投票,然后查看与这些投票相关的帐户。如果账户有模式,我们会删除这些账户,相关的投票也会随之消失。

4个回答

您正试图通过一个设计为不需要唯一身份的系统来唯一标识某物如果没有绑定和验证3 方(通常是物理)标识符,这是不可能的。相反,您最好的选择是以不鼓励自动化和/或快速结果的方式完全限制投票。
如果您的系统支持它,请参阅根据某些标准对投票进行加权:

  1. 帐户的“年龄”(自注册以来)。不允许对某个年龄以下的任何内容进行投票(例如,自比赛开始以来)。
  2. 参赛作品数量(在其他比赛中)。
  3. 帐户活动(该帐户是否经常访问/使用?) - 论坛或条目等的评论。
  4. 自注册以来用户在比赛中的投票百分比(可能显示“有针对性”的行为)。也许是不同投票者的数量?
  5. 根据每次比赛的总票数,每次参赛接受节流票。任何超过阈值的东西都会被标记为审查。

这些都应该可以从数据库/报告端实现,不需要任何花哨的 javascript 或其他客户端代码(可以被欺骗)。

您将要检查 IP(尽管显然这不是一个大障碍,您仍然应该这样做)

您需要验证码来防止(至少较弱)自动作弊

您将希望(最终)在小时间范围内手动或自动检查大量注册(自动化/填充)

禁止“免费”电子邮件服务显然会减少作弊行为,但也可能会从您的用户群中抽出更大的份额,具体取决于

如果您让他们输入更多个人信息,这至少有助于验证(姓名+地址+电话会添加一些验证,即使您没有拨打/发送短信,如果它在任何地方列出)

如果可能的话,您将希望全面进行相似性检测,而不仅仅是电子邮件(以捕捉可能稍后重复类似电子邮件的懒惰作弊者,邮件中的姓名,反之亦然)

但就防止在表面上是网络表单上作弊而言,您将需要某种唯一标识符,这当然会给您的用户带来更大的开销,您的网站需要更多的安全性,并且会导致变得谨慎的用户数量

SMS 比电子邮件帐户更可验证,因为注册 20,000 多个 hotmail/gmail/yahoo 等电子邮件帐户并不难,这忽略了丢弃电子邮件帐户/转发器。

还有自动呼叫选项(排除了一些,但不是所有的 SMS 安全问题)

如果我说您向某人发出实时纸质支票是正确的,那么要采取的一项措施就是地址。如果您像广播电台那样构建它并使其每个家庭/地址只有一个条目,这可以防止一些作弊。就试图防止某人作弊而言,您可能想看看在线游戏行业。诸如 PunkBuster 和 VAC 之类的东西未能完全防止游戏中的作弊。一件好事是每周进行一次审核并评估用户在投票前在页面上花费的时间,据我所知,这在 GA(谷歌分析)中可用。设置用户必须在页面上停留多长时间的阈值,这也有助于检测正在点击链接的脚本。

我同意@makerofthings7的观点,即U-Prove以及来自像政府这样的单一提供商的可适当验证的声明,是我们拥有的最接近您最终想要的东西。用户将(希望)希望支持“单向身份”,而不是像 OpenID 这样的全球唯一 ID,它允许依赖站点在互联网上协作和跟踪您。在身份法则中查看更多信息

与此同时,要求用户通过(选择一个)Facebook Connect 或 Google Plus 之类的方式进行注册将允许您利用这些大玩家的(有争议的)努力让人们使用真实姓名,或者至少“一对一”一个客户”。

但当然正如其他人所说,无论你做什么,只要有足够的激励,人们都会找到一种多次注册的方法。所以它真的归结为你的威胁模型中的其他因素——例如,排除那些不想经历注册麻烦的人的风险是什么,你的最终底线是什么等等。