在iPhone应用程序中存储密码

时间:2009-02-07 11:32:18

标签: iphone passwords

我有一个简单的应用程序,基于“实用程序应用程序”模板。它检索受密码保护的XML文件(通过NSXMLParser)。

我想允许用户在“FlipsideView”中设置用户名和密码,我该怎么做呢?

我有基础知识,两个UITextField框,当视图加载时(使用viewWillAppear方法)将其值设置为固定值,并在视图关闭时设置为NSLog'd( NSLog仅用于测试,显然是viewWillDisappear方法)

如何存储数据?我已经看过开发者文档了,好像我应该使用NSUserDefaults ..?

3 个答案:

答案 0 :(得分:33)

我同意本。这完全是Keychain的用途。

在任何情况下,我都不会像dbr建议的那样只将密码存储在默认值中。这是非常不安全的。您实际上是在打开密码存储密码。

除了Apple的示例代码,我还推荐Buzz Anderson的Keychain代码: iPhone Keychain Code

答案 1 :(得分:9)

这正是Apple开发Keychain的原因。使用钥匙串,您可以以加密形式存储密码。看一下Apple的GenericKeychain样本。

答案 2 :(得分:4)

Aha,NSUserDefaults似乎有用,并且使用简单,但是丝毫不安全

password是UITextField的IBOutlet。

- (void)viewWillAppear:(BOOL)animated
{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSString *pword = [prefs objectForKey:@"password"];
    password.text = uname;
}

- (void)viewWillDisappear:(BOOL)animated{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setObject:password.text forKey:@"password"];
}

密码以纯文本形式存储在plist中,因此其他人可以轻松访问..但这对于存储非敏感设置非常有用。

我最终使用它来存储用户名字段,并使用8月份答案中的SFHFKeychainUtils keychain code存储密码。