3

在我的应用程序上,用户可以登录 Facebook,然后该应用程序拥有用户的访问令牌(例如“abc”),我想使用此令牌在我自己的服务器上创建用户。

将此访问令牌发送到我的服务器(使用 SSL)是否安全,然后在我的服务器上使用https://graph.facebook.com/me?access_token=abc获取用户的用户名和 ID ,并检查令牌所属的应用程序to 是我的https://graph.facebook.com/app?access_token=abc。如果是我的应用程序,我会将用户存储在我用户的数据库中和/或登录。

这个系统可以被愚弄吗?你能想出一种方法可以让某人以其他人的身份登录吗?

4

2 回答 2

2

您应该查看所有身份验证文档和 Oauth 规范以查看可用的不同身份验证流程

从广义上讲,您可以根据访问令牌在您的服务器上创建一个用户,并合理地确定当您从 Facebook 获得相同用户 ID 的访问令牌时,它是同一个人。

如果您需要非常高的应用程序安全性,您可以采取措施确保用户的访问令牌不是通过恶意软件或 Facebook 用户被欺骗产生的,服务器端身份验证文档中有一个示例显示针对 CSRF 的保护,还有一个您可以使用的重新身份验证流程

于 2012-08-16T17:39:10.527 回答
1

我假设您为此使用 facebook sdk,如果是这样,facebook sdk 会为您处理安全问题,您不必担心任何事情。假设您在没有 sdk 的情况下访问 api,那么有两件事必须指出:

1) Auth token 频繁过期(facebook 为确保用户受到保护煞费苦心)

2)仅使用身份验证令牌发出请求是不够的,还需要一些其他无法伪造的参数,特别是如果您正在执行此服务器端,因为添加了 fb 调用服务器流身份验证的额外层

3)最重要的是,用户必须提供很多权限才能让应用程序访问某些数据。下面的链接提供了一篇关于身份验证的好文章,您可以看看

https://developers.facebook.com/docs/authentication/

长话短说,它是安全的。

于 2012-08-16T17:35:16.043 回答