在我的iPhone应用程序,有喜欢的用户名,密码和某些URL到WebService的一些机密数据。 哪一个是好还是NSUserDefaults的钥匙扣。 有人说是NSUserDefaults的不安全。 为什么它是不安全的? 和任何一个可以给每个人的优点和缺点。
Answer 1:
是NSUserDefaults的比较方便的每个键存储一个值只使用和。 但很显然,它不是一个很安全的方法,因为没有加密。
但钥匙扣是安全的,但它是一个有点难以代码。 您可以参考以下链接使用钥匙串访问。
http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code
你也可以使用这个库由西蒙deviced
https://github.com/goosoftware/GSKeychain
我希望它可以帮助你!
Answer 2:
这可能是要注意,即使你的应用程序被删除时钥匙扣数据将被保留有用的,但数据NSUserDefaults的会走与应用程序(是NSUserDefaults的应用程序沙箱的一部分,钥匙扣是一个应用程序无关的服务)。
Answer 3:
存储在任何NSUserDefaults的可(相对)容易地打开和读取,是否在设备上或在(未加密)备份到iCloud或一个同步时间的Mac。
钥匙扣,在另一方面,是为像证书和口令的东西 。 我挂了一篇题为“怎么不iOS中存储密码”这给多一点有用的细节,以及。
Answer 4:
钥匙扣是更好的方式解决,因为它是更安全,但不管怎么说,如果你将这类信息保存到NSUserDefaults的,你的用户不会感觉有什么不同。 如果有人破解他们的设备,他们可以从钥匙扣获取信息,同样因为他们将得到UserDefaults信息。 所以安全这个问题的言论。 但无论如何,良好的编程风格是将这些数据保存到钥匙扣!
Answer 5:
我会建议你使用钥匙扣。 使用钥匙串,你可以存储加密形式的密码。 看看苹果的GenericKeychain样品。
当钥匙扣NSUserDefaults的相比是有点不太安全。 NSUserDefaults的中如果特定密钥已知数据可以很容易地访问。 这不是在钥匙串的情况。
您也可以转换NSUserDefaults的到钥匙扣。 看看 这里 。