移动本机应用程序的身份验证



假设我有一个Android应用程序需要进行一些API调用。我想验证已部署的应用程序,以便未经授权的客户端不能使用我的API。

我可以在应用程序中放入任何东西——对请求进行签名的HTTP头,并用nonce完成。然而,如果有人对应用程序进行反编译,他将能够复制身份验证方法,比如生成签名和共享机密的算法。对于Java和Android,这并非不可行。

有可能避免吗?可能不会,但我想确定密码学对我来说没有解决方案。

这个问题没有解决方案。您的服务器不可能知道它正在与"您的"客户端通信。唯一可以合理验证的是用户,而不是应用程序。也可以合理地对某些安全硬件设备进行身份验证,但这非常昂贵,而且仍然不能确保您的客户端被使用;它只表明用户可以访问您的一个安全硬件设备。

这已经在SO中讨论了很多次。这些帖子讨论了这个问题,并链接到更多的讨论:

  • iOS应用程序安全的最佳实践
  • iPhone应用程序到网页的安全https加密

虽然上面的帖子都是以iOS为框架的,但这个问题是普遍存在的。

相关内容

最新更新