iOS 8,9上的NSUserDefaults有多安全?

应用内购买编程指南build议您可以在这里坚持在NSUserDefaults的应用内购买。 然而,我发现这篇文章说这是不安全的,它的数据很容易被访问和修改:

NSUserDefaults以二进制格式存储在plist中,不encryption,存储在你的应用程序目录中。 这意味着任何用户,即使是“最高级的”用户,都可以用5分钟的时间修补NSUserDefaults。

如果这是真的,用户可以很容易地获得免费的任何东西提供作为应用程序内购买,持续使用NSUserDefaults

该文章仍然是正确的iOS 8,9? 如果是的话,你如何坚持你的应用内购买? 我喜欢一些简单的解决scheme 我不(也不想)validation收据等

正如其他人所说,最好不要将敏感数据保存在UserDefaults中,例如应用内购买或明显的东西,如密码。 即使是高分的东西也可以更好地保存在钥匙链中,这样人们就不会作弊。

我认为,苹果文档的一部分已经过时了,应该改变,因为UserDefaults不是存储敏感数据的方式,在应用程序购买中肯定是IMO。

只需保存UserDefaults中的基本内容,如语言设置,音量设置等。

如果你想保存敏感数据,你应该使用钥匙串。 现在我认为keychain API是非常棘手的,但是在GitHub上可以使用两个很好的帮手

1) https://github.com/jrendel/SwiftKeychainWrapper

2) https://github.com/matthewpalmer/Locksmith

我个人使用第一个,因为它更直接,更容易使用。 它确实使保存数据的任务与UserDefaults相同。 只需将swift文件复制到您的项目中,或者使用CocoaPods即可。

第二个是更先进,更复杂,但仍然很棒。 这只是您需要的select,以及您对Keychain API的理解程度。

有一点需要记住的是,即使你删除你的应用程序,数据仍然存在,我认为这是一件好事。

所有的功劳都归功于他们各自包装的作者。

希望这可以帮助