保护用于Android客户端的REST API

9
我们正在Rails中开发一个JSON REST API,供我们开发的Android应用程序使用。有没有办法保护API,以便它只能被我们特定的Android应用程序使用?
该API是只读的,并不涉及任何与用户相关或敏感信息等情况。但在合理范围内,我们希望防止滥用并将其限制在我们的应用程序中使用。
我可以很容易地向API添加身份验证令牌,并将其与应用程序一起分发,但:
1.如果我们使用基本身份验证,我们可能需要将API移动到SSL上。 2.对于一个决心破解的人来说,打开Android APK二进制文件并发现auth令牌可能是微不足道的。
这种情况类似于咖啡店在店柜台上张贴他们的WiFi密码-你必须向想要使用服务的每个人提供秘密,所以似乎一开始就没意义。
采取什么方法最合理?
1个回答

6
想要保护一个可能是公共的未文档化API,以便只能由一个应用程序访问,意味着你想要阻止那些决定使用你的API的人使用它。也就是那些想要尽其所能使用你的API的人。
如果不是这种情况,添加认证令牌并不是一件简单的事情,但至少对于那些偶然发现你的API的人来说,这是一个很大的阶段性成果。实施这个认证并不是一个坏主意。
因为这种身份验证不是基于用户而是基于应用程序的,你不希望身份验证依赖于用户输入。请求必须完全由应用程序完成。这意味着你无论如何都必须这么做(添加硬编码令牌)。只有你让破解访问和请求令牌以及方法变得非常非常困难,才能防止决心坚定的人使用。
这取决于情况,但我会选择SSL和硬编码令牌。
一些额外的安全措施:
- 发布一个访问令牌给应用程序,该令牌只需要定期发送一个请求令牌。这意味着拦截硬编码请求令牌的机会更少,但会话基础的访问令牌会过期。也许只对每个应用程序安装做一次。 - 在发送请求令牌之前对其进行编码。这意味着人们必须反编译你的应用程序。 - 混淆代码(使其更难以反编译)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接