我正在创建一个竞赛,允许用户使用他们的 Facebook 和 Twitter 帐户登录并提交对视频的投票。我的客户担心的是,用户会通过登录不同的 Facebook 和 Twitter 帐户来玩弄系统,以保持对同一视频的垃圾投票。
我怎样才能防止这种类型的选民欺诈?
我正在创建一个竞赛,允许用户使用他们的 Facebook 和 Twitter 帐户登录并提交对视频的投票。我的客户担心的是,用户会通过登录不同的 Facebook 和 Twitter 帐户来玩弄系统,以保持对同一视频的垃圾投票。
我怎样才能防止这种类型的选民欺诈?
我预计选民欺诈将通过点击劫持或 CSRF 来完成,而不是登录他们控制的账户,利用 Facebook 的社交病毒力量来吸引不知情的同谋。
随着最近 Facebook 上的图片盛行,声称你可以通过“喜欢”和“分享”一张图片来获得 PS4,而且这样做的人数众多,我怀疑有可能创造出类似的东西来欺骗 Facebook用户注册您的网站并提交投票表格。
另一种可能性是,Facebook 上的病毒图片可能会告诉他们,他们必须注册并投票支持您的比赛中的特定参赛作品才能赢得 PS4。
CSRF 具有涉及随机数、密钥和 MAC的标准缓解技术。也有针对点击劫持的缓解技术。
确定某人以特定方式投票以获得单独的奖励更加困难。可能是 AI 的工作 您从客户那里看到的第一个引荐来源标头可能会提供有关他们动机的线索。他们花在评估各种投票选项上的时间可能也是如此。选择太快,很可能是欺诈。您可能会从跟踪鼠标移动中获得良好的数据。这些技术可能适用于您最初对一个人登录多个帐户的恐惧。
OpenID/OAuth 身份验证方法中绝对没有任何内容可以保证通过它们登录的个人确实是唯一用户。OpenID 以证书(用户名、电子邮件地址和公证人)的形式提供了比 OAuth 的代客密钥身份验证更多的数据,但仅此一项还不足以防止投票欺诈。在我看来,从这个意义上使用欺诈这个词有点严重,也许滥用更合适?无论如何,让我们看看您可以在 Web 应用程序中使用哪些其他信息,以及这对您的投票系统意味着什么:
这让您处于:
所有后三个选项实施起来都相当棘手,并且可能不在您的项目预算之内,这是 - 在一天结束时 - 这些选项中哪些可以或应该实施的最决定性因素。
在旁注中,我想给你一个加权平均的好例子,但问题是所有关心这些方法有效性的系统都故意不公布它们的内部工作,以通过规避系统来防止进一步滥用到位。使用这种投票机制并且众所周知的网站之一是IMDB(你可以判断它的有效性,我会保留我的评论),还有许多其他的完全不同的实现. 甚至 StackExchange 也有某种串行投票预防措施,但有关它的详细信息也相当少。