来自 OAuth 草案,隐含部分:
在隐式授权流程期间发布访问令牌时,授权服务器不会对客户端进行身份验证。
现在,让我们假设:
- 我有一个 Android 或 iOS 应用程序。
- 我使用 OAuth 隐式授权来获取对某些资源的访问令牌。这将通过网络视图发生。
- 用户授权我的应用访问某些资源。这表示:
- 他在具有该资源的原始服务中进行了身份验证。
- 并且网络视图将在那里对他进行会话。
- 有一个恶意的 Android 或 iOS 应用程序试图使用
client_id
我在我的应用程序中使用的相同(客户端模拟)获取访问令牌。他也有相同redirect_uri
的东西,在原生应用程序中可以是fb://blabla
. client_id
据我了解,这个恶意应用程序也可以使用 Web 视图获取原本属于我的访问令牌。发生这种情况是因为用户甚至不会意识到client_id
他正在使用,这是我的,由于 3.1 和 3.2。- 他可以用它做有害的事情,除了我的客户由于过度使用而不得不进行的速率限制(在几个提供商,如 FB 和 Twitter 中)。
有什么办法可以防止这种情况发生吗?