我没有找到任何具体的答案,而且大多数解决方案都是旧的,所以我想请社区人员了解保护Rails API免受其他请求的最佳做法,并且只允许Android应用程序访问它。没有用户注册或登录。 Android应用只需要访问数据。
我想在我的Android应用程序中插入一个密钥并在每个请求中传递该密钥,但这对我来说似乎不太安全。
建议从其他请求中保护Rails API并仅允许Android应用访问它?谢谢。
答案 0 :(得分:3)
我没有很多使用API的经验,但我知道如果你想要正确保护它们,你可以使用一些API secret keys来处理这项工作
-
API密钥
如果您只想为特定用户群提供功能,最好将API密钥嵌入到他们的应用程序中。
我不知道你是如何专门实现这一点的(IE仅适用于你的Android系统),但是在理想世界中你想要的只是允许特定的API密钥启用帐户访问Rails应用程序数据
那么你的工作就是只为Android设备提供密钥(我还不确定的部分)。
对于securing an API来说,Rails实际上非常通用:
-
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权限,也会让后方获得密钥变得非常痛苦。可能是你能做的最好的。