【问题标题】:Storing passwords in iPhone applications在 iPhone 应用程序中存储密码
【发布时间】:2010-10-06 03:15:06
【问题描述】:

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

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

我已经有了基础,两个 UITextField 框,当视图加载(使用viewWillAppear 方法)时,其值设置为固定值,当视图关闭时,NSLog'd(@ 987654322@ 只是用于测试,显然,在viewWillDisappear 方法中)

如何存储数据?我查看了开发者文档,看来我应该使用NSUserDefaults..?

【问题讨论】:

    标签: iphone passwords


    【解决方案1】:

    啊哈,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 中,因此其他人很容易访问..但这对于存储非敏感设置很有用。

    我最终使用它来存储 username 字段,并使用 August 的答案中的 SFHFKeychainUtils keychain code 存储密码。

    【讨论】:

    • 这是非常不安全的。您实际上是在公开存储密码。
    • 是的,我完全忘记了钥匙串。我更新了答案以重申它是多么不安全
    【解决方案2】:

    我同意本的观点。这正是钥匙串的用途。

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

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

    【讨论】:

    • 完美,谢谢!该页面的 cmets 中指出的一件事(在编译时导致错误),您必须包含 iPhoneOS Security.framework 才能使其工作。
    • 这对于存储密码非常有意义,但是对于存储用户名(检索密码)呢?不会在应用更新等上被覆盖的东西。如果它是唯一的东西,那么存储在 userdefaults 中似乎毫无意义。
    【解决方案3】:

    这正是 Apple 开发钥匙串的目的。使用钥匙串,您可以以加密形式存储您的密码。查看 Apple 的 GenericKeychain 示例。

    【讨论】:

      猜你喜欢
      • 2012-03-06
      • 2011-09-21
      • 1970-01-01
      • 2010-09-16
      • 2010-09-07
      • 2020-02-02
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      相关资源
      最近更新 更多