iOS 8,9上NSUserDefaults的安全性如何?

时间:2016-03-09 19:11:03

标签: ios swift security in-app-purchase nsuserdefaults

应用程序内购买编程指南建议您可以在NSUserDefaults here中保留应用内购买。但是我发现this article说它不安全,并且可以轻松访问和修改其中的数据:

  

NSUserDefaults以二进制格式存储在plist中,没有加密,并存储在应用程序的目录中。这意味着任何用户,甚至是“最苛刻的”用户,都可以用5分钟的时间来修补你的NSUserDefaults。

如果确实如此,用户可以轻松免费获得使用NSUserDefaults持久保存的应用内购买内容。

文章是否仍适用于iOS 8,9?如果是这样,您如何坚持应用内购买?我更喜欢简单的解决方案。我不(也不想)验证收据等。

1 个答案:

答案 0 :(得分:25)

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

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

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

如果要保存敏感数据,则应使用Keychain。现在我认为keychain API非常棘手,但是GitHub上有2个很棒的帮助你可以使用

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

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

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

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

使用钥匙串时要注意的一点是,即使您删除了应用程序,数据仍然存在,我认为这是件好事。

所有信用都归于他们各自包装的两位作者。

希望这有帮助