Хранение паролей в приложениях iPhone - PullRequest
25 голосов
/ 07 февраля 2009

У меня есть простое приложение, основанное на шаблоне «Utility Application». Он получает защищенный паролем XML-файл (через NSXMLParser).

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

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

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

Ответы [ 3 ]

33 голосов
/ 07 февраля 2009

Я согласен с Беном. Это точно для чего предназначен брелок.

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

Помимо примера кода Apple, я также рекомендую код цепочки для ключей Базза Андерсона: код брелка для iPhone

9 голосов
/ 07 февраля 2009

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

4 голосов
/ 07 февраля 2009

Ага, 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"];
}

Пароль хранится в виде обычного текста в виде списка, поэтому кому-то еще будет довольно легко получить к нему доступ, но это полезно для хранения нечувствительных настроек.

Я использовал это для хранения поля username и сохранил пароль, используя код цепочки для ключей SFHFKeychainUtils из ответа августа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...