【问题标题】:Secure communication between iOS client, Facebook API and serveriOS 客户端、Facebook API 和服务器之间的安全通信
【发布时间】:2012-07-16 15:42:25
【问题描述】:

我想实现一个带有 Facebook 登录的 iOS 应用。我希望我的应用程序的用户能够与他们的社交图进行交互(即发布到他们的信息流)。为此,我将使用 Facebook iOS SDK。
当用户已经通过 Facebook 进行身份验证时,他们也应该能够在我的应用程序的服务器端使用一些服务。如何根据我服务器上的服务验证用户?

在我的 iOS 应用程序中,我可以使用 iOS Facebook SDK 查询访问令牌(用于我的 Facebook 应用程序)。我应该将该访问令牌与 facebook 用户 ID 一起发送到我的服务器吗?服务器能否验证访问令牌是否有效?还是应该只有我的 iOS 应用程序与 Facebook API 通信?服务器可以发布到我的 Facebook 墙上,还是应该只通过 iOS 应用完成?

【问题讨论】:

  • 为什么投反对票,这个问题对我来说似乎很有意义,并且在解释问题方面表现出一些努力。
  • @Till 这个问题绝对有道理。也许有人不喜欢这个措辞。

标签: iphone ios facebook security facebook-graph-api


【解决方案1】:

更新:

Facebook 现在提供安全文档/清单: https://developers.facebook.com/docs/facebook-login/security/


您至少有两个选择:

  1. 将访问令牌发送到您的服务器并处理对 Facebook 的所有请求 使用该令牌(如果令牌无效,您会收到一个错误,只是 将其传递给客户端)。 => 安全但(有点)复杂。

  2. 分离之间的通信

    • 您的客户端(iOS 应用)和 Facebook API 和
    • 您的客户端和您的服务器。

    您的应用将通过 Facebook iOS SDK 处理对 Facebook API 的所有请求,然后将生成的数据(如各种 Facebook id)传送到您的服务器。如果没有某种加密,这种方法是完全不安全的;您可以将一些加密哈希函数发送到您的服务器,并使用存储在您的服务器和 iOS 应用程序上的密钥对其进行验证。 => 这种方法(有点)更容易实现,但安全性较低,因为密钥可以通过逆向工程被盗。此外,在将您的应用提交到应用商店时,您必须选中“我正在使用加密”复选标记。

这实际上取决于你愿意承担多少风险、你提出什么样的要求、你有什么样的服务等等。

服务器能否验证访问令牌是否有效?

是的,看这里:Facebook access token server-side validation for iPhone app

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 2014-11-05
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多