如何在验证应用内购买后安全地启用功能



我正在开发一个iOS应用程序,但如果这里有答案,它可能也适用于其他平台。

基本上有两种方法可以验证应用内购买:本地和服务器端。此处记录了服务器端方法。(我目前找不到本地方法的文档。

假设我在服务器端验证购买。我的问题是关于之后会发生什么,以启用购买的功能。我没有看到有关此的文档。我错过了吗?

我想两三个步骤:

  1. 服务器向iOS应用程序发送HTTPS响应,说"是的,您进行了X购买"。
  2. 该应用程序翻转内存中的一些布尔变量以启用购买的功能。
  3. [也许] 该应用程序将此状态保存到本地存储中,这样它就不需要在每次启动时都通过互联网重新验证收据。

所有这些步骤似乎都容易受到黑客入侵/越狱客户端设备的攻击。显然,黑客攻击的难度与应用内购买的成本以及潜在的收入损失之间存在权衡。我正在考虑该应用程序更昂贵或更受欢迎并且可能有动力破解它的情况。

示例可能的漏洞:(同样,所有这些可能都需要一个对黑客有帮助的操作系统内核(

  • 可以嗅探和检查真实的服务器响应,然后为其他用户伪造
  • 可以检查应用程序的内存并翻转布尔变量
  • 如果状态已保存(例如,在文件中或用户默认键值存储中(,则可以更改该状态

那么,是否有一些技术可以减轻或防止这些黑客攻击?还是公司只是接受一个坚定的黑客可以窃取软件,并将其作为开展业务成本的一部分?

不知道这里是否有"正确"的答案,因为你很好地概述了它:

显然,黑客攻击的难度与应用内购买的成本以及潜在的收入损失之间存在权衡。

如果有官方的处理方式,那么它确实会成为黑客攻击的目标。

我见过的大多数应用程序(甚至是大型应用程序(都将数据保存在本地存储中以确定购买状态。但。。。您可以将此数据保存在短缓存中,并在后台每 5 分钟左右刷新一次。这样,黑客需要每 5 分钟覆盖一次它,这使得正常使用非常不切实际。

除非您有很高的支持用户成本(例如Spotify支付许可费用(,否则可能有比这更好的投资领域。

最新更新