Ответ 1
Вы никогда не должны сохранять пароль напрямую, вместо этого сохраняете хэш пароля.
Возможный дубликат:
Сохранение пароля
Я использую общие предпочтения для хранения пароля. Безопасно ли сохранять данные пароля, как есть, или я должен зашифровать его перед сохранением. Пожалуйста, помогите мне с образцом кода.
Спасибо, Advance,
Вы никогда не должны сохранять пароль напрямую, вместо этого сохраняете хэш пароля.
Короткий ответ: безопасный красивый.
Длинный ответ: во-первых, если вы создаете приложение, которое позволяет пользователю входить в веб-/удаленный сервис, вы можете посмотреть AccountManager
. Немного сложнее изучить API и связать с ним, но вы получаете некоторые полезные преимущества:
AccountManager
).SyncAdapter
(и их запись будет довольно упрощена, так как AccountManager
вызовет ваши адаптеры с правой учетной записью - вам не нужно вручную запускать синхронизацию для каждой учетной записи).Settings > Accounts & sync
.Проверьте Пример адаптера синхронизации в документах - он показывает, как использовать AccountManager
(вы можете игнорировать файлы синхронизации, если вам не нужны она).
Теперь, чтобы обеспечить сохранность пароля (что следует за сохранением пароля в SharedPreferences
и в AccountManager
). Пока устройство, на котором выполняется ваше приложение, не внедрено, оно полностью безопасно. Никакое другое приложение, кроме вашего, не может прочитать пароль. Вы даже не можете прочитать пароль, если вы подключите телефон к ПК с помощью USB-кабеля и используйте adb pull
, чтобы попытаться получить соответствующий файл.
Однако, если телефон укоренен, любое приложение, получающее root-доступ, может прочитать пароль. Кроме того, adb pull
работает, и вы можете получить пароль за считанные секунды.
В связи с этим рекомендуется шифрование (особенно если ваш веб-сайт/облако/удаленный сервис содержит конфиденциальные данные). Я использовал SimpleCrypto
в своем последнем проекте (вместе с AccountManager
), и он работает очень хорошо. Если вам интересно, я просто использовал константу для "главного пароля". Для дополнительной безопасности я обфускал окончательную сборку (проверить, как).
Нет, он никогда не защищен для хранения паролей в текстовом формате, помните, что случилось с Sony недавно?
Любой метод java encryption будет