Intereting Posts
ios – какова правильная конфигурация подписи кода для сборки Ad-Hoc, предназначенная для переноса с itunes на устройство? Воспроизведение частей аудиофайла в iOS? Реагировать Нативный запрет на совпадение строки состояния на всех экранах Рисование изображения с помощью UIBezierPath в viewDidLoad: неверная ошибка контекста Как добавить пользовательские изображения как UIApplicationShortcutIcon для UIApplicationShortcutItem? Как изменить настройки сборки iOS по умолчанию? Как использовать вкладки и слайд-меню вместе на последней версии бета-версии 7 для ионных фреймов? Примените bolding к части NSAttributedString, сохраняя при этом размер шрифта и лица Цель C: Как выделить первую ячейку в виде таблицы при загрузке представлений? Что такое шаблон проектирования, называемый, где методы – это методы экземпляра, а не методы класса? iOS обработка нескольких push-уведомлений React-Native Open Url в браузере по умолчанию iOS – как структурировать базу данных для соответствия правилам резервного копирования iCloud Является ли приложение безопасности приложений для приложений iOS «означает, что мне нужно переключать API на https? UIActivityViewController не будет размещать URL-адрес в Twitter и Facebook

Лучший способ сохранить учетные данные в устройстве

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

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

Итак, можете ли вы указать, какой путь лучше всего подходит для этой ситуации?

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

Для iOS используйте KeyChain. Эта оболочка помогает:

UICKeyChainStore

Для Android

Secure-предпочтения

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

На Android SharedPreferences – хороший способ сделать это, это довольно просто. Но дружеское напоминание … ЭТО НЕ БЕЗОПАСНЫЙ ПУТЬ, но это, наверное, самый простой. Пользователь может получить доступ к этому файлу, если устройство коренится, а данные хранятся в виде простого текста способом Key-Value .

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

Вы также можете использовать решение AccountManager от Google. Это уже обсуждалось по этому вопросу здесь на SO.

Вы также можете попытаться изменить способ аутентификации пользователя на своем сервере, предложение будет использовать OAuth , как это делает Twitter.

Но, если вам нравится использовать SharedPreferences , об этом ниже.

Подробнее о SharedPreferences здесь . И вы можете получить доступ к документам здесь .

Пример:

 public class SessionManager { private static SessionManager instance = null; private SharedPreferences sharedPref; private Editor editor; private final String prefName = "session"; public static SessionManager getInstance() { if (instance == null) { instance = new SessionManager(); } return instance; } private SessionManager() { sharedPref = context_.getSharedPreferences(prefName,Context.MODE_PRIVATE); } public void saveUser(String username, String password, int sid) { if (TextUtils.isEmpty(username) && TextUtils.isEmpty(password) && sid > 0) { editor = sharedPref.edit(); editor.putInt("session_id",sid); editor.putString("username", username); editor.putString("password",password); editor.commit(); } } public String getUsername() { return sharedPref.getString("username",null); } // Declare other methods to fetch the rest of the data. } 

TL; DR: Лучше не хранить эти конфиденциальные данные в виде обычного текста. Но это, безусловно, самый простой способ.