2010-08-19 3 views
2

Я создал приложение, в котором я использовал кодировку base64 и сохранил пароль пользователя в NSUSerDefaults, но каким-то другим разработчиком iPhone ломает этот пароль. Интересно, как он мог получить данные NSUserDefaults? Кто-нибудь знает, как остановить эту критическую вещь, а также как он получил данные NSUserDefaults. Также, что лучший метод шифрования для хранения пароля пользователя в iphone?Получить NSUSerDefaults Данные с устройства

ответ

2

Предлагаю вам ознакомиться с SFHFKeychainUtils. Он завершает работу Keychain Services API и предоставляет очень простой интерфейс для хранения конфиденциальной информации, такой как пароли.

магазин вам пароль:

NSError * error; 
[SFHFKeychainUtils storeUsername:userName andPassword:password forServiceName:@"whatever_service" updateExisting:YES error:&error]; 

Получит ваш пароль обратно:

NSError * error; 
password= [[SFHFKeychainUtils getPasswordForUsername:userName andServiceName:@"whatever_service" error:&error] retain]; 

Можно также удалить сохраненное значение с помощью сообщения deleteItemForUsername, если вам необходимо войти пользователь вне.

+0

Спасибо за ответ. Существует простой вид входа в систему, и для его удобства ему не нужно будет вводить пароль снова, поэтому я сохранил пароль в NSUserdefaults. Должен ли я использовать базу данных Sqlite3? –

+0

@ rahul-vyas Нет, я предлагаю вам использовать брелок. Я - пара строк кода (после добавления SFHFKeychainUtils.m & .h в ваш проект (я обнов свой ответ). – RedBlueThing

+2

NSUserDefaults небезопасен, а кодировка base64 не является шифрованием. Я был бы удивлен, если ваше приложение было разрешено в магазине, если вы не используете брелок для хранения учетных данных, как я полагаю, требуется в соглашении о разработке. –

0

У кого-то, у кого был сломанный iPhone, больше контроля над устройством, чем вы. Нельзя скрывать секрет, а не на флеш-диске, а не в памяти. Когда вы строите сервер, вы всегда должны предполагать, что злоумышленник может подключить вредоносного клиента. Период окончания истории.

+0

Rook Возможно ли получить данные NSUserDefaults без вредоносного устройства? –

2

брелка представляет собой зашифрованный контейнер , который содержит пароль для нескольких приложений и защищенных услуг. Брелки: защищенное хранение контейнеры, что означает, что когда брелок для ключей заблокирован, никто не может получить доступ к защищенному содержимому. - Руководство по программированию ключей Keychain, Apple 2010.

Я рекомендую вам прочитать Keychain Services Tasks for iOS.

0

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

Смежные вопросы