NSUserDefaults或keychain更适合在iPhone应用程序中保存用户名和密码

NSUserDefaults或keychain更适合在iPhone应用程序中保存用户名和密码,iphone,nsuserdefaults,keychain,Iphone,Nsuserdefaults,Keychain,在我的iphone应用程序中,有一些机密数据,如用户名、密码和一些指向Web服务的URL。 哪一个更好?默认值还是钥匙链。 有人说这是不安全的。为什么它是不安全的? 任何一个都可以给出每一个的优缺点。存储在NSUserDefaults中的任何内容都可以(相对)轻松地打开和读取,无论是在设备上,还是在iCloud或同步Mac的(非加密)备份中 。我链接了一篇题为“如何在iOS中不存储密码”的文章,这篇文章还提供了一些更有用的细节。钥匙链是更好的解决方案,因为它更安全,但无论如何,如果您将此类信息保

在我的iphone应用程序中,有一些机密数据,如用户名、密码和一些指向Web服务的URL。 哪一个更好?默认值还是钥匙链。 有人说这是不安全的。为什么它是不安全的?
任何一个都可以给出每一个的优缺点。

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


。我链接了一篇题为“如何在iOS中不存储密码”的文章,这篇文章还提供了一些更有用的细节。

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

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

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

您也可以使用Simon开发的这个库


我希望它能帮助你

我建议您使用钥匙链。 使用密钥链,您可以以加密形式存储密码。看看苹果的样品

与Keychain相比,NSUserDefaults的安全性稍差一些。 在NSUserDefaults中,如果已知特定密钥,则可以轻松访问数据。钥匙链中的情况并非如此


还可以将NSUserDefaults转换为钥匙链。请看一看

注意,即使您的应用程序被删除,钥匙链数据也将被保留,但NSUserDefaults数据将随应用程序一起消失(NSUserDefaults是应用程序沙盒的一部分,钥匙链是独立于应用程序的服务)

在NSUserDefaults中,如果已知特定密钥,则可以轻松访问数据。钥匙链中的情况并非如此。你这是什么意思?