Android, где нужно сохранять личные данные?

У меня есть дилемма: мне нужно сохранить некоторые данные о безопасности на моем устройстве Android, эти данные являются информацией для входа в личный кабинет, так что, пожалуйста, дайте мне совет, где лучше сохранить эту информацию в простой файл txt (но как насчет безопасности ?) Или, может быть, есть аналог базы данных MySQL в платформе Android (и как я могу получить к ней доступ)?

Лучший способ хранения персональных данных в приложении Android – использовать общие настройки с режимом private, чтобы никто не мог получить доступ к этим данным, отличным от вашего приложения. Для получения дополнительной информации см. Рекомендации разработчиков Android об общих настройках здесь.

Вы можете сохранить простой txt-файл в свой каталог приложений. В общем, Android назначает каждому приложению уникальный uid. Каждое приложение имеет свой собственный каталог приложений с режимом 660. Таким образом, другое приложение не может получить доступ к своему контенту. Чтобы написать собственный каталог приложений, вы можете использовать следующий код:

String filename = "myfile"; String string = "Your security content"; FileOutputStream outputStream; try { outputStream = openFileOutput(filename, Context.MODE_PRIVATE); string = encrypt(string); outputStream.write(string.getBytes()); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } 

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

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

AFAIK вы не можете запускать MySQL на устройстве Android, но вы можете использовать SQLite ( учебник ). Вы даже можете попробовать использовать SQLCipher для хранения в зашифрованной базе данных. Хотя мне говорят, что не слишком сложно извлечь ключ доступа из вашего APK.

Когда вы храните свой пароль, убедитесь, что вы его зашифруете (даже если вы шифруете базу данных). Хранение паролей в виде обычного текста редко является хорошей идеей;)

Независимо от того, что вы делаете, НЕ храните его в текстовом файле!

Вы можете сохранить данные в SQLdb на Android, но сохранить все данные формы с помощью шифрования и просто сохранить строки.

Вы можете увидеть в ответе ниже пример того, как кто-то делает эту ту же самую технику и использует phoneId для шифрования (хотя я не уверен, насколько это безопасно).

Безопасно ли хранить имя пользователя + пароли в локальном SQLite db в Android?