9

我们正在 Rails 中开发一个 JSON REST API,供我们也在开发的 Android 应用程序使用。有什么方法可以保护 API,使其只能由我们特定的 Android 应用程序使用?

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

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

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

这种情况似乎类似于咖啡馆在商店柜台上张贴他们的 WiFi 密码——你必须将秘密告诉所有想要使用你服务的人,所以一开始就拥有它似乎毫无意义。

采取什么最合理的方法?

4

1 回答 1

6

想要保护一个可能公开的未记录 API,使其只能由一个应用程序访问,意味着您想要阻止那些确定使用您的 API 的人使用您的 API。

意思是那些会尽一切可能使用你的 API 的人。

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

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

这意味着无论如何您都必须这样做(添加硬编码令牌)。只有你让一个有决心的人很难发现访问和请求令牌和方法。

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

一些额外的安全性:

  • 向只需要定期发送请求令牌的应用程序释放访问令牌。这意味着人们拦截硬编码请求令牌的机会较小,但基于会话的访问令牌会过期。也许只为每个应用程序安装执行一次。
  • 在通过空中发送此请求令牌之前对其进行编码。这意味着人们必须反编译您的应用程序。
  • 混淆代码(使其更难反编译)。
于 2013-03-07T14:33:43.753 回答