跟进Design for Facebook authentication in an iOS app that also accesses a secured web service中概述的设计,特别是https://stackoverflow.com/a/12912616/5154090中列出的问题:缓解措施是什么?
具体来说,我有一个Web服务器,它公开了一个由移动应用程序使用的REST API。我希望用户使用Facebook对服务器进行身份验证(通过应用程序)。
现在,一个显而易见的流程是应用程序将用户重定向到Facebook,他们将使用他们的凭据登录。然后,应用程序将获得一个将发送到服务器的令牌,服务器将使用图形API验证令牌。
但是服务器如何确保令牌真的来自应用程序?具体来说,是什么阻止恶意应用程序供应商重新使用我的应用程序ID?毕竟,应用程序ID被硬编码到应用程序中,因此可以被恶意应用程序提取和使用。如果用户使用Facebook登录该恶意应用程序,则恶意供应商可以使用我的应用程序ID获取令牌,并可以模拟我的服务用户。
如何防止这种情况发生?
答案 0 :(得分:0)
总结其他任何碰巧考虑这个问题的人 - 确实无法阻止客户端ID被欺骗。这是开发人员不鼓励在本地应用程序中使用OAuth隐式流程的原因之一,正如Andre https://stackoverflow.com/a/17439317/5154090所指出的那样:
对本机应用程序使用Implicit Flow不是 推荐。
(见https://tools.ietf.org/html/draft-ietf-oauth-native-apps-09#section-8.5)。
实际上,如果有人安装此攻击,那么用户将下载App A(恶意应用程序),然后会被要求授权App B代表他们采取行动。据我所知,这通常是发生攻击的唯一迹象。