Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅允许Android应用程序访问Rails API的最佳实践_Android_Ruby On Rails_Ruby On Rails 4_Rails Api - Fatal编程技术网

仅允许Android应用程序访问Rails API的最佳实践

仅允许Android应用程序访问Rails API的最佳实践,android,ruby-on-rails,ruby-on-rails-4,rails-api,Android,Ruby On Rails,Ruby On Rails 4,Rails Api,我没有找到任何具体的答案,而且大多数解决方案都是较旧的,所以我想向社区询问保护Rails API不受其他请求影响的最佳实践,并且只允许Android应用程序访问它。没有用户注册或登录。Android应用程序只需要访问数据 我想在我的Android应用程序中插入一个密钥,并在每个请求中传递该密钥,但这对我来说似乎不太安全 在保护Rails API不受其他请求的影响并只允许Android应用程序访问它时,建议采用什么做法?谢谢。我对API没有太多经验,但我知道如果您想正确地保护它们,可以使用一些来处

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

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


在保护Rails API不受其他请求的影响并只允许Android应用程序访问它时,建议采用什么做法?谢谢。

我对API没有太多经验,但我知道如果您想正确地保护它们,可以使用一些来处理这项工作

--

API密钥

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

我不知道你是如何做到这一点的(仅适用于你的android系统),但在理想情况下,你希望的是只允许特定的API密钥启用帐户访问Rails应用程序数据

然后,你的工作将是只为android驱动的设备提供钥匙(这部分我还不确定)

Rails实际上在以下方面非常通用:

--

Android ID

我不知道具体是什么,如果你在安卓设备上安装应用程序,你肯定可以访问安卓ID或其他什么

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


也许你的流程可以是这样的——应用程序的第一次运行将验证设备是否为Android,如果是,则将设备ID添加到rails“API密钥”数据库中。这将允许您在将来访问该设备

我认为您无法获得100%的安全性。但是,如果您将密钥存储在应用程序的数据区域(即将文件写入内部存储位置),那么在最坏的情况下,获取密钥将非常困难。我不敢说不可能。chink是指有根设备的人可以很容易地打开文件。您可以使用一种技巧,比如使用源代码中的另一个密钥加密密钥,然后使用ProGuard或其他方法混淆源代码。这也不是十全十美的,但即使用户有root,获取密钥也会让人感到非常痛苦。可能是你能做的最好的了。

谢谢。有用的建议!