漏洞与Facebook令牌劫持

时间:2014-01-21 08:53:46

标签: facebook api security facebook-access-token

根据开发人员的Facebook手册(https://developers.facebook.com/docs/facebook-login/security),您不必使用某些Facebook SDK客户端的access_token,而无需确保它是专门为您的Facebook应用程序生成的。< / p>

我想知道这里有哪些漏洞。为什么我应该关心哪个应用程序收到令牌,如果我可以使用它来进行API调用并通过它获取用户数据?

  

令牌劫持

     

要了解这是如何发生的,想象一下想要进行API调用的原生iOS应用程序,但不是直接进行,而是与同一应用程序拥有的服务器通信,并将使用iOS SDK生成的令牌传递给该服务器。然后,服务器将使用令牌进行API调用。

     

服务器用于接收令牌的端点可能会受到攻击,而其他端点可能会为完全不同的应用程序传递访问令牌。这显然是不安全的,但有一种方法可以防止这种情况 - 永远不应该假设访问令牌来自使用它们的应用程序,而应该使用调试端点来检查它们。

1 个答案:

答案 0 :(得分:3)

这些类型的漏洞是特定于应用程序的 - 我能想到的一个场景是:

想象一下,您正在使用Facebook身份验证作为SSO机制,并创建了一个带有Web服务的应用程序,该应用程序向经过身份验证的用户返回一些私人信息。此Web服务称为/secretdocuments/download,它将访问令牌作为参数。

如果webservice只检查它收到的访问令牌是针对它在数据库中的用户(通过调用/ me然后是数据库查找),则恶意的人可以:

  1. 创建一些其他“诱饵”应用程序。
  2. 向您的某个用户发送该应用的链接,并鼓励他们进行安装。
  3. 该用户使用诱饵应用进行身份验证,并且访问令牌为 产生。诱饵应用程序将此访问令牌发送给恶意用户。
  4. 恶意用户获取该访问令牌并使用它调用您的/secretdocuments/download Web服务。
  5. 您的网络服务仅检查访问令牌是否适合用户 它位于数据库中,并将私有信息返回给 恶意用户。
  6. 在这种情况下,您的Web服务必须检查提供的访问令牌是否由您的应用程序生成。