Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在iOS中维护登录凭据的最佳方式是什么?_Iphone_Objective C_Ios_Credentials - Fatal编程技术网

Iphone 在iOS中维护登录凭据的最佳方式是什么?

Iphone 在iOS中维护登录凭据的最佳方式是什么?,iphone,objective-c,ios,credentials,Iphone,Objective C,Ios,Credentials,我需要在整个应用程序中维护我的登录凭据,因此, 我有3个选项来维护我的登录凭据 1 key chain 2 NSUserDefaults 3 plist 哪一个是最好的选择? 是否有其他方法存储登录凭据 提前感谢我建议使用keychain存储登录凭据,因为它提供了安全功能。 iOS上的密钥链服务提供了一种安全存储内容(如密码、密钥、证书等)的方法 密码和钥匙等敏感数据应存储在钥匙链中。苹果公司声明: “密钥链是一个加密容器,用于保存多个用户的密码 应用程序和安全服务。钥匙链是安全存储 容器,这

我需要在整个应用程序中维护我的登录凭据,因此, 我有3个选项来维护我的登录凭据

1 key chain
2 NSUserDefaults
3 plist
哪一个是最好的选择? 是否有其他方法存储登录凭据


提前感谢

我建议使用keychain存储登录凭据,因为它提供了安全功能。 iOS上的密钥链服务提供了一种安全存储内容(如密码、密钥、证书等)的方法

密码和钥匙等敏感数据应存储在钥匙链中。苹果公司声明:

“密钥链是一个加密容器,用于保存多个用户的密码 应用程序和安全服务。钥匙链是安全存储 容器,这意味着当钥匙链被锁定时,没有人可以 访问其受保护的内容”

这里有两个很好的教程


  • 我认为NSUserDefaults是存储登录凭据的简单方法。这是一个教程

    这旨在使使用Mac OSX和iOS钥匙链与使用默认设置一样简单

    它是一个围绕Mac OSX和iOS密钥链的兼容KVO的Cocoa包装器,该包装器的型号为NSUserDefaults,因此其目的是在常见情况下,您通常希望调用:

    [NSUserDefaultsController sharedUserDefaultsController]
    
    你应该可以打电话

    [PDKeychainBindingsController sharedKeychainBindingsController]
    
    [PDKeychainBindings sharedKeychainBindings]
    
    对于一般情况,您通常会致电:

    [NSUserDefaults standardUserDefaults]
    
    你应该可以打电话

    [PDKeychainBindingsController sharedKeychainBindingsController]
    
    [PDKeychainBindings sharedKeychainBindings]
    

    两种实现之间存在一些差异。首先,这个类只对字符串有效,因为这是Keychain所接受的,所以从类中省略了获取非字符串对象(如数组和字典等)的方法。其次,现在只实现了“立即模式”,因此您不能设置一组值,然后调用“保存”只进行一次写入,也没有“还原到保存的值”功能。)

    您好,感谢您的快速回复。。。但我有一个疑问?。。。虽然存储在钥匙链中是安全的,但在卸载状态下,钥匙链中包含的密码不会被删除,那么我如何维护它?即使应用程序已被删除且密码保留在钥匙链中,它也是安全的。当应用程序被移除时,无法将其从钥匙链中移除。如果有的话,密码会一直存在,直到你的应用重新安装。没有人可以访问或查看它。@Spynet:这将是一个问题,您可以通过只向NSUSerDefault添加一个标志来克服它。当应用程序运行时,首先检查bool。bool表示密码已保存到keychain。@MidhunMP当keychain同步时该怎么办?或者当用户更改其iCloud acc时?钥匙链将更改凭据将存储为带有
    NSUserDefaults
    的纯文本。这是不安全的。@JackHumphries好的,我刚刚告诉过你很容易save@JackHumphriesplist是否提供安全性?plist与
    NSUserDefaults
    相同。密码仍将以纯文本形式存储在文件中。使用这两种方法中的任何一种安全地存储密码的唯一方法是使用算法加密密码,然后将其保存在那里,尽管密钥链会这样做。