根据开发人员的Facebook手册(https://developers.facebook.com/docs/facebook-login/security),您不必使用某些Facebook SDK客户端的access_token
,而无需确保它是专门为您的Facebook应用程序生成的。< / p>
我想知道这里有哪些漏洞。为什么我应该关心哪个应用程序收到令牌,如果我可以使用它来进行API调用并通过它获取用户数据?
令牌劫持
要了解这是如何发生的,想象一下想要进行API调用的原生iOS应用程序,但不是直接进行,而是与同一应用程序拥有的服务器通信,并将使用iOS SDK生成的令牌传递给该服务器。然后,服务器将使用令牌进行API调用。
服务器用于接收令牌的端点可能会受到攻击,而其他端点可能会为完全不同的应用程序传递访问令牌。这显然是不安全的,但有一种方法可以防止这种情况 - 永远不应该假设访问令牌来自使用它们的应用程序,而应该使用调试端点来检查它们。
答案 0 :(得分:3)
这些类型的漏洞是特定于应用程序的 - 我能想到的一个场景是:
想象一下,您正在使用Facebook身份验证作为SSO机制,并创建了一个带有Web服务的应用程序,该应用程序向经过身份验证的用户返回一些私人信息。此Web服务称为/secretdocuments/download
,它将访问令牌作为参数。
如果webservice只检查它收到的访问令牌是针对它在数据库中的用户(通过调用/ me然后是数据库查找),则恶意的人可以:
/secretdocuments/download
Web服务。 在这种情况下,您的Web服务必须检查提供的访问令牌是否由您的应用程序生成。