减轻在线比赛中的作弊和选民欺诈……
我们举办各种类型的在线竞赛,涉及用户对条目进行投票(通常每个用户每天投一票)。奖金从数百美元到数千美元不等。在过去的四年里,我们遇到了很多人试图作弊的方式,并且在每种情况下都采取了应对措施。就目前而言,我们使用以下措施:
身份验证
用户必须创建一个帐户并进行身份验证(登录)。这排除了匿名投票填充。
电子邮件确认
用户必须通过单击系统电子邮件中的链接来确认他们的电子邮件地址,以确认他们拥有并有权访问他们的地址。这排除了使用随机(不一定是有效的)电子邮件地址创建大量帐户的可能性。对于一个帐户,它还会稍微减慢该过程,如果您尝试创建多个帐户,则会减慢很多。
无 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)防止他们作弊?
更新
我们决定不让我们的欺诈保护防泄漏,因为其中一位开发人员指出“你越难让人们作弊,就越难检测到作弊行为。” 取而代之的是,我们正在使用一种称为三边蝙蝠的中世纪中国狩猎技术。通过在大多数方面使作弊变得非常困难,但在其他方面相对容易通过,我们确切地知道在投票结果更新之前要寻找和消除什么。
我们寻找投票的模式,例如一个参赛者收到一连串定时投票,然后查看与这些投票相关的帐户。如果账户有模式,我们会删除这些账户,相关的投票也会随之消失。