facebook验证通过客户端SDK - 安全概念

时间:2012-12-19 15:18:17

标签: facebook api authentication login

我想我并不完全理解facebook OAuth-API处理身份验证的方式。据我所知,它基本上像这样(客户端是Android手机,我的服务器是标准的LAMP设置): fb auth http://i.imagebanana.com/img/hvlsb2dp/fbAuth.png

现在问题是,客户端当然可以通过向我的服务器提交错误的用户ID来伪造第3步 - 例如,如果我的服务器响应请求http://server.com/getConfidentialData.php?fbID=%FBID%,并且用户设法获得fb-别人的userID,他可以把它放到请求中,然后他就会得到属于别人的数据。

如果我使用PHP-SDK,它如何知道我的用户是否登录Android-App?

这是应该的方式,还是我错过了什么?

谢谢, 大卫。

2 个答案:

答案 0 :(得分:1)

唯一真正的解决方案:

当你拥有一个拥有私人用户数据的服务器而不是所有东西都在Facebook上的那一刻,你需要进行服务器端登录,一旦你理解了流程就不难实现。

查看Facebook上的图表,并按照他们在此示例中提供的指南进行操作,您就可以了。

https://developers.facebook.com/docs/howtos/login/server-side-login/

答案 1 :(得分:0)

我有完全相同的问题...同样的感觉,但由于你没有任何答案,我会带你到我发现的地方。

我设计了以下解决方案:

我向我的服务器发送了fb userID,他的电子邮件(以便在我的服务器中识别他)和他的访问令牌(所有这些都通过https,就像是一次特殊的登录呼叫一样)。

从我的服务器尝试访问令牌,如果这个工作(*)我也在我的服务器中记录和更新/注册用户。

(*)我首先定义的工作就像我可以访问用户的电子邮件一样,但是那个拥有该权限的任何其他应用程序都可以冒充我的用户,所以现在我延长了令牌生命,只有当令牌来自我的时候才能生效应用

我希望这会有所帮助,同时,如果有人能够真正解决这个问题并向我们解释别人如何避免这种情况,我将不胜感激。

干杯!