如何避免Android中的Rest API滥用?

时间:2014-12-05 16:28:58

标签: android rest authentication hmac

我们开发了一个使用REST API的服务和一个利用它的Android应用程序。我们目前不要求我们的用户进行身份验证。

我们希望实现一种简单的机制来防止随机人员从应用范围之外调用API,主要是为了避免滥用会破坏我们计算的数据。

我偶然发现this url他们建议通过让服务器和Android客户端共享密钥并使用它来计算 HMAC 来传递请求来强制执行身份验证。他们声称他们在亚马逊中使用这种方法(我还没有亚马逊AWS的经验)。

我正在考虑如下:

  • 在服务器和Android应用程序中存储一个共同的秘密(除了使用ProGuard之外,任何混淆它的好主意?)
  • 让客户端和服务器通过普通HTTP进行通信(我们还不需要机密性,我们将节省一些CPU)并使用HMAC方法将呼叫验证为“来自合法的Android客户端”。
  • 我们可以不时更新秘密(可能是每个新版本的应用程序)。
  • 如果将来我们需要保密,我们将为相关的REST呼叫启用TLS。

你认为这个解决方案有效吗?有人用这样的东西吗?备择方案?建议?

感谢。

1 个答案:

答案 0 :(得分:0)

我不是安全专家。

您的解决方案听起来很好,可以保护您免受“随机人员”的攻击,但您仍然容易受到专门攻击者的攻击。存储在客户端上的任何东西都可以挖出来并用来对付你。 ProGuard将劝阻一名不经意的攻击者,但对于一名专门的攻击者来说,这只是一个减速带。

这里没有人能够告诉你这种安全级别是否足够好,因为它在很大程度上取决于你的应用程序的具体细节。最终决定应由产品所有者承担。