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

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

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

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

>如果我们使用BASIC auth,我们可能不得不将API移到SSL.
>对于一个坚定的人来说打开Android APK二进制文件并揭开身份验证令牌可能是微不足道的.

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

什么是最合理的方法?

解决方法

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

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

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

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

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

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

一些额外的安全:

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

相关文章

AdvserView.java package com.earen.viewflipper; import an...
ImageView的scaleType的属性有好几种,分别是matrix(默认)...
文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...