Следует ли использовать AccountManager для хранения имен пользователей и паролей для Android-приложения?
Я хотел бы знать, следует ли реализовать AccountManager
для сохранения учетных данных пользователя, таких как имя пользователя, адрес электронной почты, пароли и т.д. Я не могу найти повод для его использования.
Я не хочу, чтобы другие приложения имели доступ к Accounts
, и я действительно не хочу, чтобы они отображались в настройках "Учетные записи и синхронизация" (хотя, возможно, это не большая проблема).
Итак, мой вопрос: следует ли использовать его? За и против? Могу ли я скрыть Accounts
из других приложений и не показывать их в "Учетные записи и синхронизация"?
Ответы
Ответ 1
Этот принятый ответ на этот вопрос, вероятно, поможет вам...
Для чего нужно использовать AccountManager для Android?
Следует также отметить, как упоминалось выше, а также в AccountManager без SyncAdapter?, что вы не можете иметь AccountManager
без a SyncAdapter
, поэтому его, вероятно, не очень удобно использовать для конкретной ситуации.
Я не вижу никакой причины использовать AccountManager
специально для хранения этого типа информации - в конце дня, не говоря уже о том, чтобы вручную хранить данные самостоятельно в вашей собственной базе данных или файле. Во всяком случае, это, вероятно, усложняет ситуацию - почему бы вам просто не сохранить ее в SharedPreferences
?
Единственная причина, по которой я мог бы подумать, будет способствовать использованию AccountManager
, если вы хотите разделить свою учетную запись с несколькими различными приложениями, поскольку данные хранятся в центральном хранилище данных Android, к которому можно получить доступ Все приложения. Однако, если это не требуется, я думаю, что, возможно, проще и проще просто использовать SharedPreferences
Ответ 2
Обзор
Использование AccountManager для хранения учетных данных является гораздо безопасным способом, чем хранение в файле или SQL DB.
Файл может быть восстановлен любым другим приложением, в отличие от AccountManager Android, который обеспечит доступ только к вашему приложению.
Но даже AccountManager не полностью защищен в случае потерянного телефона, например см. это для дополнительной информации.
Хорошая практика (ы)
- Я бы рекомендовал использовать AccountManager и not сохранить пароль в ясном, но хеш.
- И для лучшего уровня безопасности еще лучше хранить выделенный токен устройства, поставляемый веб-сервисом и связанный с учетной записью (на стороне веб-службы), и разрешить пользователю отменять токен.
Не хорошо
- не хранить ясный или даже хэшированный пароль в виде файла или в базе данных, доступной для всех.
- Никогда не храните ясный пароль, но всегда работайте с хешем.
См. также