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

时间:2013-01-11 19:39:18

标签: ios in-app-purchase

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

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

以英雄学院为例,有可能。

  • Player1购买其游戏帐户和iTunes帐户的所有IAP
  • Player1登录Player2的Hero Academy游戏帐号
  • Player1将非耗材IAP重新下载到Player2的游戏帐户中,赋予Player2所有IAP权限
  • Player2在他自己的设备上登录他的游戏帐户,现在拥有所有IAP的权限

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

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

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

2 个答案:

答案 0 :(得分:1)

一个简单的解决方案是使用软消费的IAP,用户在游戏中花费购买非消费品。

即。我以5美元的价格购买了100块魔法硬币的耗材IAP捆绑套件,以便购买价值50枚魔币的Magic Bean产品。

答案 1 :(得分:0)

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

通过在那里保留您自己的Hero Academy ID,我认为您实际上会将其与特定AppleID同步。这将是您的漏洞利用的第2步,Player2需要将他的AppleID和密码都给予Player1。很多人不愿意这样做。但是,有些是为了防止这种情况,我认为你必须对你的游戏进行编程,以便它检查NSUbiquitousKeyValueStore的权限。换句话说,您在使用AppleID时必须与AppleID积极关联特殊购买。

您的游戏实际上永远不会看到实际的AppleID,但它可以通过Hero Academy播放的ID来区分一个iCloud商店与其他商店。

我正在尝试在我正在开发的应用中出于类似原因做类似的事情。我没有经过足够的测试以确保上述方法有效,但到目前为止看起来很有希望。