我有一个基于PHP的投票应用程序,可以通过Facebook登录(使用PHP SDK)。您需要连接您的Facebook帐户才能投票。我们决定使用Facebook登录来防止投票欺诈。
使用Facebook帐户登录后,会发生以下情况:
现在,这就是问题所在。我可以使用虚假标识详细信息模拟HTTP请求,并且应用程序仍然认为这是合法请求,因此记录投票。因此,有人可以设置脚本来生成随机标识详细信息,通过HTTP请求发送它们最终导致大量欺诈投票。
也许,在民意调查结束后,我们可以使用个人资料网址进行测试,看看这些个人资料是否存在,但这里有两个问题:
那么,有没有办法只通过应用程序允许合法登录?在记录投票之前就像测试一样。
我猜,CAPTCHA可以提供帮助,但这会影响我们希望用户拥有的快速投票体验。
谢谢!
答案 0 :(得分:2)
将这些内容放在表单中,不执行任何其他操作不是这样做的方法。
这应该如何运作:
$uid = $facebook->getUser();
获取刚刚登录的用户的用户ID。如果为0,则登录失败。 修改强>
由于我不完全了解FB API提供的各种方法,因此我会推迟@Igy(请参阅他关于检索访问令牌以验证帐户的评论)。但是,我不知道用户能够伪造API返回的帐户ID的能力。