仅允许Android应用访问Rails API的最佳做法

时间:2014-08-08 01:35:49

标签: android ruby-on-rails ruby-on-rails-4 rails-api

我没有找到任何具体的答案,而且大多数解决方案都是旧的,所以我想请社区人员了解保护Rails API免受其他请求的最佳做法,并且只允许Android应用程序访问它。没有用户注册或登录。 Android应用只需要访问数据。

我想在我的Android应用程序中插入一个密钥并在每个请求中传递该密钥,但这对我来说似乎不太安全。

建议从其他请求中保护Rails API并仅允许Android应用访问它?谢谢。

2 个答案:

答案 0 :(得分:3)

我没有很多使用API​​的经验,但我知道如果你想要正确保护它们,你可以使用一些API secret keys来处理这项工作

-

API密钥

如果您只想为特定用户群提供功能,最好将API密钥嵌入到他们的应用程序中。

我不知道你是如何专门实现这一点的(IE仅适用于你的Android系统),但是在理想世界中你想要的只是允许特定的API密钥启用帐户访问Rails应用程序数据

那么你的工作就是只为Android设备提供密钥(我还不确定的部分)。

对于securing an API来说,Rails实际上非常通用:

enter image description here

-

Android ID

我不知道具体,如果您在Android设备上安装应用程序,您肯定可以访问Android ID或其他内容吗?

reading this documentation后,您似乎可以访问Android内部的设备ID集合(包括您的设备和Android安装)。我将研究如何使用这些作为识别API请求的方法

Is there a unique Android device ID?

也许您的流程可能是这样的 - 应用程序的第一次运行将验证设备是否为Android,如果是,则将设备ID添加到您的rails“API Keys”db。这将允许您将来允许访问设备

答案 1 :(得分:1)

我认为您无法获得100%的安全保障。但是,如果将密钥存储在应用程序的数据区域中(即将文件写入内部存储位置),则最糟糕的情况是难以实现。我犹豫说不可能。缺口是有根设备的人可以很容易地打开文件。您可以使用源代码中的另一个密钥来加密密钥,然后使用ProGuard或其他东西对您的源进行模糊处理。这也不会很完美,但即使用户拥有root权限,也会让后方获得密钥变得非常痛苦。可能是你能做的最好的。