NSUserDefaults或钥匙串最好将用户名和密码保存在iPhone应用程序中



在我的iPhone应用程序中,有一些机密数据,如用户名,密码和一些网络服务的URL。哪个更好 NSUserdefaults 或钥匙串。有人说NSUserdefaults不安全。为什么不安全?任何人都可以给出每个人的利弊。

NSUserDefaults非常易于使用,每个键只存储一个值。但显然,这不是一种非常安全的方法,因为没有加密。

但是钥匙串是安全的,尽管编码有点困难。您可以参考这些链接以使用钥匙串访问。

http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code

您也可以使用西蒙安装的此库

https://github.com/goosoftware/GSKeychain

希望对您有所帮助!!

请注意

,即使您删除了应用程序,钥匙串数据也会保留,但 NSUserDefaults 数据将随应用程序一起消失(NSUserDefaults 是应用程序沙箱的一部分,钥匙串是独立于应用程序的服务)。

存储在NSUserDefaults中的任何内容都可以(相对)轻松地打开和读取,无论是在设备上还是在iCloud或同步Mac的(未加密)备份中。

另一方面,钥匙串用于证书和密码等内容。我链接了一篇题为"如何在iOS中不存储密码"的文章,该文章也提供了更多有用的细节。

钥匙

串是更好的解决方案,因为它更安全,但无论如何,如果你将这种信息保存到NSUserDefaults中,你的用户不会有任何不同。如果有人入侵他们的设备,他们可以从钥匙串获取信息,就像他们从UserDefaults获取信息一样。所以这个安全问题是修辞。但无论如何,好的编程风格是将这些数据保存到钥匙串中!

我建议您使用钥匙串。使用钥匙串,您可以以加密形式存储密码。看看 Apple 的 GenericKeychain 示例。

与钥匙串相比,NSUserDefaults的安全性稍低。在NSUserDefaults中,如果已知特定键,则可以轻松访问数据。钥匙串中的情况并非如此。

您还可以将 NSUserDefaults 转换为钥匙串。看看这里。

最新更新