防止社交媒体竞赛中的选民欺诈

信息安全 Web应用程序 验证 oauth Facebook 推特
2021-09-08 16:49:18

我正在创建一个竞赛,允许用户使用他们的 Facebook 和 Twitter 帐户登录并提交对视频的投票。我的客户担心的是,用户会通过登录不同的 Facebook 和 Twitter 帐户来玩弄系统,以保持对同一视频的垃圾投票。

我怎样才能防止这种类型的选民欺诈?

2个回答

我预计选民欺诈将通过点击劫持或 CSRF 来完成,而不是登录他们控制的账户,利用 Facebook 的社交病毒力量来吸引不知情的同谋。

随着最近 Facebook 上的图片盛行,声称你可以通过“喜欢”和“分享”一张图片来获得 PS4,而且这样做的人数众多,我怀疑有可能创造出类似的东西来欺骗 Facebook用户注册您的网站并提交投票表格。

另一种可能性是,Facebook 上的病毒图片可能会告诉他们,他们必须注册并投票支持您的比赛中的特定参赛作品才能赢得 PS4。

CSRF 具有涉及随机数、密钥和 MAC的标准缓解技术。也有针对点击劫持的缓解技术

确定某人以特定方式投票以获得单独的奖励更加困难。可能是 AI 的工作 您从客户那里看到的第一个引荐来源标头可能会提供有关他们动机的线索。他们花在评估各种投票选项上的时间可能也是如此。选择太快,很可能是欺诈。您可能会从跟踪鼠标移动中获得良好的数据。这些技术可能适用于您最初对一个人登录多个帐户的恐惧。

OpenID/OAuth 身份验证方法中绝对没有任何内容可以保证通过它们登录的个人确实是唯一用户。OpenID 以证书(用户名、电子邮件地址和公证人)的形式提供了比 OAuth 的代客密钥身份验证更多的数据,但仅此一项还不足以防止投票欺诈在我看来,从这个意义上使用欺诈这个词有点严重,也许滥用更合适?无论如何,让我们看看您可以在 Web 应用程序中使用哪些其他信息,以及这对您的投票系统意味着什么:

  • IP 地址: 不适合,因为大多数用户的 IP 由 DHCP 服务器分配并且是动态的(可以稍后分配给另一个用户,或者同一个用户可以请求一个新的),不同的用户可能通过相同的方式访问您的网站IP(使用代理服务器的组织和其他人、通过 IPv4 代理建立隧道的移动 IPv6 用户等),或者同一个人可以使用其他方式使用不同的 IP(TOR 网络、VPN 等)访问您的网站
  • 会话 ID:这包括一个会话 cookie(或无 cookie 会话中的某种形式的会话持久请求查询值),通常还包括用户代理字符串(浏览器的标识字符串),以及我们已经介绍过的 IP。这些(单独或整个会话)都不能保证唯一的用户登录,因为他们可以简单地切换到不同的浏览器,通过删除 cookie 清除用户会话,甚至更改浏览器的签名。所有这些都可能使用户会话无效,并且会请求新的会话。
  • 推荐字符串:不适合单独使用,因为它很容易被欺骗或简单地重复使用多次。

这让您处于:

  • 信任 Facebook 和 Twitter 自己检测每个用户的多个帐户,
  • 请求额外的用户身份验证以尝试检测此类滥用(可能不可能比 Facebook 和 Twitter 已经存在的更好),
  • 改为以投票方式投票(仅邀请一次投票),或
  • 在展示结果时考虑可能的投票滥用(例如加权平均数)。

所有后三个选项实施起来都相当棘手,并且可能不在您的项目预算之内,这是 - 在一天结束时 - 这些选项中哪些可以或应该实施的最决定性因素。

在旁注中,我想给你一个加权平均的好例子,但问题是所有关心这些方法有效性的系统都故意不公布它们的内部工作,以通过规避系统来防止进一步滥用到位。使用这种投票机制并且众所周知的网站之一是IMDB(你可以判断它的有效性,我会保留我的评论),还有许多其他的完全不同的实现. 甚至 StackExchange 也有某种串行投票预防措施,但有关它的详细信息也相当少。