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

Geo*_*old 8 security rest android ruby-on-rails-3.2

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

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

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

  1. 如果我们使用BASIC auth,我们可能不得不将API移到SSL.
  2. 对于一个坚定的人打开Android APK二进制文件并且无论如何都要发现身份验证令牌,这可能是微不足道的.

这种情况看起来类似于咖啡馆在商店柜台上发布他们的WiFi密码 - 你必须把秘密告诉所有想要使用你服务的人,所以一开始就把它放在一边似乎毫无意义.

什么是最合理的方法?

Tim*_*tje 6

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

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

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

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

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

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

一些额外的安全:

  • 向应用程序释放访问令牌,只需要定期发送请求令牌.意味着人们更少机会拦截硬编码的请求令牌,但是基于会话的访问令牌会过期.也许只为每个应用程序安装执行此操作.
  • 在通过空中发送之前对此请求令牌进行编码.意味着人们必须反编译你的应用程序.
  • 混淆代码(使反编译更加困难).