2013-05-16 22 views
8

我的应用程序使用应用程序内购买,并验证与Apple的交易收据。这表明,许多用户试图通过提交虚假交易收据来盗用应用内购买机制,该虚假交易收据的产品ID为com.zeptolab.ctrbonus.superpower1(来自“Cut the Rope”)。当然,我不会让他们用虚假收据来使用应用内购买物品。什么是一些战斗对付iOS盗版,并试图让这些人支付或遭受损失?针对iOS应用内购买盗版的策略?

+3

受苦,哈哈。你最好不要放松睡眠。 – Wain

回答

5

真正防止这种情况的唯一方法是通过您自己的服务器控制所有内容。即使是臭名昭着的“com.zeptolab.ctrbonus.superpower1”收据也是一个实际有效的收据,苹果自己的验证终端会告诉您确定无误。一旦交易完成,应用程序应该将交易数据发送到您控制的服务器,并且:

  1. Validate the receipt with Apple从您自己的服务器上。
  2. 如果Apple表示没问题,请解析Apple的响应中的product_id字段,并确保它是来自您的应用的产品ID。
  3. 如果前两项通过,则返回数据以告诉您的应用在哪里下载您的内容(如果它是托管内容的话)。

即使这有一个缺陷,特别是如果你的IAP内容只是在设备上,但“锁定”。有许多方法可以从您的服务器重定向验证呼叫,让您的应用程序认为您的服务器说“一切正常!”。如果您的IAP内容是远程托管的,那么这将更加困难,因为如果他们不知道内容的位置在哪里,那么它们就不能轻易地对内容的位置进行欺骗。

对于大多数人来说,所有这些问题都是控制你自己的服务器和远程内容会花费很多,更不用说编写你自己的验证逻辑了。要让这些黑客成功越困难,你就越需要花费,所以你必须权衡你想让他们“忍受”你愿意花费多少时间,精力和金钱与你做出和/或失去多少。请记住,一个“盗版”的IAP不一定等于一个丢失的销售,所以很难判断你会失去多少。

+0

整齐地解释!谢谢 –

+0

如果来自我的服务器的响应是加密签名的,那么它们不能重定向,因为签名不会被验证(不需要反汇编和修改应用程序,但可以轻松禁用购买检查本身)。 –