Подтвердить что ты не робот

Хранение паролей в приложениях iPhone

У меня есть простое приложение, основанное на шаблоне "Утилита приложения". Он извлекает защищенный паролем XML файл (через NSXMLParser).

Я хочу разрешить пользователю устанавливать имя пользователя и пароль в "FlipsideView", как бы я это сделал?

У меня есть основы на месте, два поля UITextField, значение которых устанавливается равным фиксированному значению при загрузке представления (с использованием метода viewWillAppear) и NSLog'd при закрытии представления (NSLog просто для тестирования, очевидно, в методе viewWillDisappear)

Как хранить данные? Я посмотрел документацию разработчика, и мне кажется, что я должен использовать NSUserDefaults..?

4b9b3361

Ответ 1

Я согласен с Беном. Это именно то, для чего нужен брелок.

Я бы ни при каких обстоятельствах просто не хранил пароли по умолчанию, как предлагает dbr. Это очень неуверенно. Вы в основном сохраняете свои пароли в открытом доступе.

В дополнение к образцу кода Apple, я также рекомендую код Buzz Anderson Keychain: iPhone Keychain Code

Ответ 2

Это именно то, что Apple разработала для Keychain. Используя Keychain, вы можете сохранить свой пароль в зашифрованном виде. Взгляните на образец GenericKeychain.

Ответ 3

Aha, NSUserDefaults, похоже, работает и прост в использовании, , но не защищен в малейшем:

password - это IBOutlet для UITextField.

- (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, поэтому для кого-то другого было бы довольно легко получить доступ, но это полезно для хранения нечувствительных настроек.

В итоге я использовал это для хранения поля имени пользователя и сохранил пароль, используя SFHFKeychainUtils keychain code от ответа от августа.