Par*_*att 12 iphone cocoa-touch in-app-purchase ios4
我有一些功能只有在通过应用程序购买购买后才能解锁.
如果我将标志值存储在NSUserDefaults中以检查是否已购买应用程序,这样可以吗?
通过In App Purchase完成购买后,将标志存储在NSUserDefaults中是否安全?
The*_*heo 34
不,这不安全.
内容NSUserDefaults以纯文本格式存储.可以使用iExplorer等工具访问和修改它们.这也适用于没有越狱的设备.
这意味着,如果您将购买信息保存在NSUserDefaults中,则用户可以在不进行实际购买的情况下解锁您的内容.
要以不容易"破解"的方式保存标志,您可以执行以下操作之一:
保存存储信息的额外盐渍哈希值.使用哈希来验证用户是否未修改信息.您可以在此处找到此概念的实现.
将标志保存在钥匙串中.阅读Apple的Keychain Services Programming Guide中的更多内容.你可以在GitHub上找到这个概念的几个实现,例如Lockbox.
更新:从iOS 8.3开始,对应用程序沙箱的访问受到一定限制.虽然这增加了一些安全性,但我仍然不建议使用NSUserDefaults,因为对于越狱设备,启用了iTunes文件共享的应用程序,以及运行旧版iOS的设备,仍然可以访问沙箱.
归档时间: |
|
查看次数: |
2783 次 |
最近记录: |