保护REST API以供Android客户端使用

时间:2013-03-07 14:05:33

标签: android security rest ruby-on-rails-3.2

我们正在开发Rails中的JSON REST API,供我们正在开发的Android应用程序使用。有没有办法保护API,使其只能由我们的特定Android应用程序使用?

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

我可以轻松地向API添加身份验证令牌并将其与应用程序一起分发,但是:

  1. 如果我们使用BASIC auth。
  2. ,我们可能不得不将API移到SSL
  3. 对于一个坚定的人打开Android APK二进制文件并揭开身份验证令牌,这可能是微不足道的。
  4. 这种情况似乎类似于咖啡馆在商店柜台上张贴他们的WiFi密码 - 你必须把秘密告诉所有想要使用你服务的人,所以首先把它放在一边似乎毫无意义。

    最合理的方法是什么?

1 个答案:

答案 0 :(得分:6)

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

意味着会尽一切可能使用您的API。

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

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

意味着你必须这样做(添加硬编码令牌)。只有你让一个坚定的人发现访问权限并请求令牌和方法非常困难。

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

一些额外的安全性:

  • 向只需要发送的应用程序发布访问令牌 定期请求令牌。意味着人们拦截的机会越来越少 硬编码请求令牌,但基于会话的访问令牌 到期。也许只为每次安装应用程序执行此操作。
  • 在通过广播发送之前对此请求令牌进行编码。含义 人们必须反编译你的应用程序。
  • 混淆代码(使反编译变得更加困难)。