iOS漏洞利用:恢复多个游戏帐户的应用内购买

Nat*_*ith 5 in-app-purchase ios

我正在iOS上创建一个服务器驱动的游戏,允许玩家为多设备游戏创建一个游戏帐户.我的游戏具有非消耗品的应用内购买(IAP),可以由原始购买者恢复或重新下载.

我希望玩家无法将他们的IAP恢复到多个游戏账户.根据Apple的规定,这可能吗?

以英雄学院为例,它有可能.

  • Player1在他的游戏账户和iTunes账户上购买所有IAP
  • Player1登录Player2的英雄学院游戏帐号
  • Player1将非消耗性IAP重新下载到Player2的游戏帐户中,赋予Player2所有IAP权限
  • Player2在他自己的设备上登录他的游戏帐户,现在拥有所有IAP的权限

结果是:Player2免费获得了所有IAP.

我可以阅读他们的iTunes帐户并将iTunes恢复购买限制在一个游戏帐户中.实施该解决方案似乎与Apple恢复非消耗性IAP的指导方针相悖.

我可能会认为这些购买消费品只适用于一个帐户,但这似乎违背了Apple的指导方针,而且最终用户设计也很差.

Bru*_*las 0

我怀疑答案可能在于使用 NSUbiquitousKeyValueStore 之类的东西。这确实需要用户使用 iCloud,但我认为大多数用户都会这样做。如果我理解正确的话,这是一个基于 iCloud 的键值存储,因此将与一个特定的 AppleID 相关联。

通过保留您自己的 Hero Academy ID,我认为您实际上可以将其与特定的 AppleID 同步。这就是说,在漏洞利用的第 2 步中,玩家 2 需要将他的 AppleID 和密码提供给玩家 1。很多人不愿意这样做。然而,有些是,为了防止这种情况,我认为你必须对你的游戏进行编程,以便它根据 NSUbiquitousKeyValueStore 检查权限。换句话说,您必须在使用 AppleID 时将特惠商品与您的 AppleID 主动关联起来。

您的游戏实际上永远不会看到实际的 AppleID,但它能够通过您放置在其中的《英雄学院》游戏 ID 来区分一个 iCloud 商店和另一个 iCloud 商店。

由于类似的原因,我正在尝试在我现在正在开发的应用程序中做类似的事情。我还没有进行足够的测试来确保上述方法有效,但到目前为止它似乎很有希望。