有没有比使用plist保存应用内购买更安全的解决方案?

use*_*435 3 iphone nsuserdefaults in-app-purchase

我正在使用应用内购买构建iPhone应用.我正在使用"内置"模型,其中附加内容在验证收据后解锁.我的交易没有问题......但是在用户设备上保存购买记录的最佳方法是什么?

Apple指南建议使用NSUserDefaults存储该信息.这个建议的问题是任何拥有iPhone Explorer免费副本的人都可以非常轻松地进入应用程序,编辑plist,并解锁完整版本而无需实际支付.

有人可以推荐更安全的解决方案吗?

Ben*_*tto 6

标准免责声明:这里没有"真正的解决方案"可以打败所有盗版 - 免费解锁东西只有不同程度的难度.目前的传统观点:担心知道如何编辑app plists的少数人可能并不重要.

无论如何:

  1. 您可以将这些数据存储在(例如)应用程序文件系统中持久存在的任何位置.~除了/tmp或之外的任何地方/Library/Caches.您可以使用通常隐藏在普通目录列表下的句点前缀文件名.
  2. 你可以用某种格式将它存储在钥匙串中,这对于你正在做的事情来说不一定更安全,但却是一个相当模糊的地方来保持旗帜.
  3. 在上述任何一种情况下,您都可以使用嵌入在应用程序二进制文件中的密钥对该标志进行签名.如果我要达到这个程度,我会将设备的唯一ID与标志的值(YES)或您需要的任何其他ID字符串连接起来,然后使用您生成并保持混淆的16byte密钥的SHA-HMAC你的二进制.

大部分可能都是矫枉过正,请参见顶部的免责声明.:)