2013-03-07 62 views
6

我们正在开发Rails中的JSON REST API以供我们也在开发的Android应用程序使用。有没有什么方法来保护API,使其只能被我们特定的Android应用程序使用?保护REST API以供Android客户端使用

API是只读的,不涉及任何类型的用户相关或其他敏感信息。但是在合理的范围内,我们希望防止滥用并将其限制仅限于我们的应用。

我可以轻松地添加认证令牌的API并与应用分发,但:

  1. 我们很可能需要在移动API到SSL,如果我们使用基本身份验证。
  2. 对于一个坚定的人来说,打开Android APK二进制文件并揭示auth令牌可能是微不足道的。

这种情况看起来类似于在商店柜台上张贴他们的WiFi密码的咖啡馆 - 你必须把秘密传递给每个想要使用你的服务的人,所以几乎没有意义把它放在第一位。

什么是最合理的方法?

回答

6

想要保护一个可能公开的未公开的API,以便它只能被一个应用程序访问,这意味着您想阻止人们使用您的API,它们是使用您的API的确定的

含义的人谁会尽可能使用您的API。

如果不是这种情况,那么添加Auth令牌并不是微不足道的,但对于偶然发现API的人来说至少是一个大垫脚石。实施这个并不是一个非常糟糕的主意。

由于此身份验证不是基于用户的,而是基于应用程序的,您不希望身份验证依赖于用户输入。该请求必须纯粹由应用程序完成。

无论如何你必须这样做(添加硬编码标记)。只有你让有决心的人非常难以发现访问和请求令牌以及方法。

这取决于具体情况,但我会选择SSL和硬编码标记。

一些额外的安全性:

  • 发行的访问令牌只需要令牌定期发送 请求的应用程序。意味着较少机会人拦截 硬编码的请求令牌,但是会有一个基于会话的访问令牌,该令牌会在 过期。也许只需要为每个应用程序安装一次。
  • 在通过无线发送该请求令牌之前对其进行编码。含义 人们必须反编译你的应用程序。
  • 混淆代码(使其更难以反编译)。