2010-03-05 2 views
3

Многие из моих пользователей запросили защиту паролем для различных элементов данных в моей базе данных. К сожалению, одна из моих существующих функций - это резервное копирование базы данных в общедоступное местоположение (SD-карта) для избыточности данных, поэтому моя база данных небезопасна.Как защитить пароли в приложении Android

Так что мой вопрос в два раза.

  1. Как я могу зашифровать или защитить базу данных на Android?

  2. Как я могу хранить созданные пользователем пароли на устройстве безопасным, недоступным способом.

+0

Это действительно как два отдельных вопроса. – Casebash

+0

Вы никогда не должны хранить свои пароли в виде обычного текста. Храните SHA256 (пароль + соль). – pmilosev

ответ

0

Если вы храните данные через хранилище предпочтений, эти данные доступны только для вашего приложения, если система андроида действительна (не установлена ​​и т. Д.). Каждое приложение получит собственный пользователь для доступа к файловой системе, и поэтому базовая система Linux не позволит другим приложениям читать эти хранилища данных.

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

Если вам требуется пароль для входа в внешнее веб-приложение и не может просто хранить хэш пароля, то существует специальный механизм, используемый, например, для аутентификации google. Вы входите в веб-приложение с паролем имени пользователя, а затем веб-приложение отправляет маркер безопасности на ваше устройство. Этот токен может быть сохранен и действителен для входа в систему в течение двух недель с этого устройства. Это может работать только в том случае, если вы управляете некоторыми частями веб-приложения, с которым работаете.

+0

Хранилище предпочтений - это простой словарь ключей/значений, а не подходящая поддержка базы данных. Кроме того, файлы базы данных, созданные SQLLiteOpenHelper, получают выгоду от той же защиты, которую вы описали. – Segfault

+0

, если вы храните пароли в хранилище предпочтений, они не хранятся в db, а db могут быть записаны на SD-карту без проблем безопасности. – Janusz

+0

Мне по-прежнему необходимо защитить базу данных, даже если паролей там нет. Некоторые из данных в базе данных будут специально защищены паролем этими паролями, поэтому, даже если они хранятся где-то в другом месте, данные, которые они защищают, по-прежнему должны быть защищены. – CodeFusionMobile

1

Если вы используете API версии 5 или выше, вы можете интегрироваться с android.accounts.AccountManager.

+1

Я на API 3. Я мог бы обновить, но потерял бы слишком много пользователей для функции, которую не каждый мог использовать. – CodeFusionMobile

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