我的应用程序需要有一个非常安全的故事,虽然我想使用我的应用程序设置的标准iOS设置,但我无法在任何地方找到"安全文本字段"我会用密码使用密钥链吗?
答案 0 :(得分:1)
“设置”包中的所有内容都存储在NSUserDefaults中。但问题是为什么一些着名的应用程序(例如Facebook)提供用户在用户默认设置中更改密码?我的想法是如何运作的。
您订阅了有关NSUserDefaults的通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(defaultsChanged:) name:NSUserDefaultsDidChangeNotification object:nil];
你实现了defaultsChanged :(那是我在飞行中写的......没有经过测试)
- (void)defaultsChanged:(NSNotification *)notification {
// Get the user defaults
NSUserDefaults *defaults = (NSUserDefaults *)[notification object];
NSString *newPassword = [defaults objectForKey:@"YourPasswordKey"];
// (Check new password if necessary) save it securely
// Or store it securely and use it for authentication only when the User returns to your app again.
NSString *dummyText = //The string the same length as newPassword containing e.g. only * character
[defaults setObject:dummyText forKey:@"YourPasswordKey"];
}
摘要:您允许用户通过设置套件在“设置”应用中输入密码。但是你安全地存储密码。这些敏感信息只有很短的时间才会出现在用户默认值中。用户不知道在设置中是否知道他的密码。
注意:如果您的应用未启动,则可能会在启动之前收到通知。在这种情况下,您可以阅读NSUserDefualts以获取新密码值并在应用程序启动时替换。无论如何,由于用户可能会在更改密码后不久启动您的应用程序,因此也很长一段时间。
的问候。