Сохранить имя пользователя-пароль с NSUserDefault, насколько и насколько безопасно? - PullRequest
4 голосов
/ 06 марта 2011

Я бы сохранил пару значений (имя пользователя-пароль) с NSUserDefault.

Во-первых: есть ли способ сохранить их вместе (например, в массиве)? Второе: это безопасно? или я каким-то образом зашифровал пароль?

Ответы [ 4 ]

14 голосов
/ 06 марта 2011

Шифрование обеспечит вам некоторую безопасность.Проблема в том, что вашей программе также придется расшифровывать пароль, что означает, что в нем должен храниться ключ.Это сделает его уязвимым для обратного проектирования.Лучшим подходом является использование односторонней функции (такой как хеш) для пароля и сохранение этого значения хеша.Когда пользователь вводит пароль, вы применяете одностороннюю функцию к паролю и сравниваете результат с сохраненным значением.Таким образом, пароль не может быть скомпрометирован (ну, всегда есть атака по словарю, но это вопрос надежности пароля).

Вместо использования NSUserDefaults, было бы лучше использовать iOS Keychain Services.Его главная цель - надежно хранить учетные данные пользователя.Apple уже сделала всю тяжелую работу за вас.Воспользуйтесь этим.

8 голосов
/ 06 марта 2011

Нет.Это небезопасно.

Если вам нужно надежно хранить данные, используйте цепочку для ключей .

1 голос
/ 11 марта 2014

Этот прост в использовании, работает с ARC

1 голос
/ 06 марта 2011

вы можете использовать NSDictionary или NSarray для сохранения ваших значений, и вам также следует зашифровать ваши данные, потому что NSUserDefaults работает как plist, к которому может получить доступ любой

...