【问题标题】:How to avoid Rest API abuse in Android?如何避免 Android 中的 Rest API 滥用?
【发布时间】:2015-02-03 21:23:51
【问题描述】:

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

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

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

我正在考虑如下进行:

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

您认为该解决方案可行吗?有人在使用这样的东西吗?备择方案?建议?

谢谢。

【问题讨论】:

  • 1.反剧透角色对接口入口进行数据检查。 2.您必须使用完整的安全性,否则您可能会留下问题并节省很多。

标签: android rest authentication hmac


【解决方案1】:

我不是安全专家。

您的解决方案听起来不错,可以保护您免受“随机人”的侵害,但您仍然容易受到专门攻击者的攻击。存储在客户端上的任何内容都可以被挖掘出来并用来对付你。 ProGuard 会阻止临时攻击者,但对于专门的攻击者,它只是一个减速带。

这里没有人能够告诉您这种安全级别是否足够好,因为这在很大程度上取决于您的应用程序的具体情况。最终决定权应在产品所有者手中。

【讨论】:

  • 我们的目标是提供温和的保护,阻止那些没有真正致力于入侵应用程序的人。如果我们需要确保在强(er)级别进行身份验证,我们将使用 OAuth 或 TLS+用户身份验证,并且应用程序本身没有嵌入任何秘密。我个人喜欢这个解决方案,因为它不需要 HTTPS(我们不需要隐藏传递的内容)并且很难破解以阻止大多数人。
猜你喜欢
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 2015-02-12
相关资源
最近更新 更多