Android: сохранение имени пользователя и пароля? - PullRequest
167 голосов
/ 18 декабря 2009

Если я хочу сохранить имя пользователя и пароль для использования в приложении Android, каков наилучший способ сделать это? Это через экран настроек (но что, если пользователь пропустит это?), Или всплывающее диалоговое окно с запросом учетных данных? Если это так, я должен поддерживать состояние приложения. Как бы я это сделал?

Ответы [ 9 ]

109 голосов
/ 18 декабря 2009

В большинстве приложений для Android и iPhone, которые я видел, используется начальный экран или диалоговое окно для запроса учетных данных. Я думаю, что пользователю неудобно часто вводить свое имя / пароль, поэтому хранение этой информации имеет смысл с точки зрения удобства использования.

Совет от ( Руководства разработчика Android ):

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

Где возможно, имя пользователя и пароль не должны храниться на устройство. Вместо этого выполните первоначальную аутентификацию, используя имя пользователя и пароль, предоставленный пользователем, а затем использовать недолго, токен авторизации для конкретной службы.

Использование AccountManger - лучший вариант для хранения учетных данных. SampleSyncAdapter предоставляет пример того, как его использовать.

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

8 голосов
/ 12 декабря 2012

Я думаю, что лучший способ защитить ваши учетные данные - это сначала подумать о сохранении пароля с шифрованием в файле account.db, который не может быть легко доступен на нерутированных устройствах, а в случае рутированного устройства хакеру может понадобиться ключ для расшифровки.

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

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

8 голосов
/ 04 апреля 2012

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

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

SampleSyncAdapter (как упомянуто @Miguel) - это пример, в котором используются сохраненные учетные данные.

3 голосов
/ 18 июня 2011

Взгляните на Каков наиболее подходящий способ хранения пользовательских настроек в приложении Android , если вас беспокоит сохранение паролей в виде открытого текста в SharedPreferences.

2 голосов
/ 24 февраля 2017

Они ранжируются в порядке сложности, чтобы сломать вашу скрытую информацию .

  1. Хранить в открытом тексте

  2. Хранить в зашифрованном виде с использованием симметричного ключа

  3. Использование хранилища ключей Android

  4. Хранить в зашифрованном виде с использованием асимметричных ключей

источник: Где лучше всего хранить пароль в вашем приложении для Android

Само хранилище ключей зашифровано с помощью собственного PIN-кода пользователя на экране блокировки, следовательно, когда экран устройства заблокирован, хранилище ключей недоступно. Помните об этом, если у вас есть фоновая служба, которой может потребоваться доступ к секретам вашего приложения.

источник: Простое использование Android Keystore для хранения паролей и другой конфиденциальной информации

2 голосов
/ 02 ноября 2015

С новым (Android 6.0) оборудованием и API для отпечатков пальцев вы можете сделать это, как в этом примере приложения github.

2 голосов
/ 18 июня 2013

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

Использование криптографии для безопасного хранения учетных данных

2 голосов
/ 22 августа 2010

Вы также можете посмотреть образец SampleSyncAdapter из SDK. Это может помочь вам.

1 голос
/ 02 мая 2013

Информация на http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html является довольно прагматичным, но основанным на использовании подхода «скрытый-андроид-apis». Это то, что нужно учитывать, когда вы действительно не можете обойтись хранением учетных данных / паролей локально на устройстве.

Я также разработал суть этой идеи в https://gist.github.com/kbsriram/5503519, что может быть полезно.

...