我有一个基于 PHP 的投票应用程序,它需要 Facebook 登录(使用 PHP SDK)。您需要连接您的 Facebook 帐户才能投票。我们决定使用 Facebook 登录来防止投票欺诈。
使用 Facebook 帐户登录后,会发生以下情况:
- 登录页面包含隐藏变量——userId、accessToken、姓名、电子邮件、性别、位置、家乡和指向用户个人资料的链接——所有这些都是从 Facebook 登录返回的。
- 用户在投票中选择一个选项,然后应用程序会记录他的选择以及他的身份详细信息(在第一点中列出)。
现在,问题就在这里。我可以用虚假的身份信息模拟 HTTP 请求,但应用程序仍然认为这是一个合法请求,因此记录了投票。因此,有人可以设置一个脚本来生成随机识别详细信息,通过 HTTP 请求发送它们,最终导致大量欺诈选票。
也许,在投票结束后,我们可以使用配置文件 URL 进行测试,以查看配置文件是否存在,但这里有两个问题:
- 入侵者可以使用有效用户配置文件 URL 列表来创建欺诈投票。如果他这样做了,我们不知道投票是否是欺诈。
- 防止欺诈投票不是比以后整理更好的主意吗?
那么,有没有办法只允许通过应用程序进行合法登录?类似于记录投票前的测试。
我想,验证码可以提供帮助,但这会干扰我们希望用户拥有的快速投票体验。
谢谢你!