Насколько я понимаю, можно получить данные, хранящиеся в SharedPreferences
. Поэтому это не безопасно. Может ли кто-нибудь посоветовать мне, как полностью обезопасить данные? Я знаю, что можно зашифровать и сохранить данные, но мне интересно, есть ли другой способ?
Android. Как полностью защитить значения, хранящиеся в общих настройках?
Ответы (3)
Данные, хранящиеся в SharedPreferences, если они созданы с помощью Context.MODE_PRIVATE, доступны только для вашего собственного приложения.
Однако, если телефон пользователя рутирован, то данные могут быть прочитаны корневыми приложениями (даже если они созданы с помощью Context.MODE_PRIVATE).
Нет никакого способа избежать этого, никогда. Но вы можете принять меры предосторожности, например зашифровать данные в SharedPreferences.
Хорошим примером этого является библиотека SecurePreferences: https://github.com/scottyab/secure-preferences
Общие настройки хранятся в виде файла в файловой системе устройства. По умолчанию они хранятся в каталоге данных приложения с установленными премиссиями файловой системы, которые разрешают доступ к ним только UID, с которым работает конкретное приложение.
Таким образом, они являются частными, поскольку права доступа к файлам в Linux ограничивают доступ к ним, как и в любой системе Linux/Unix.
Любой, у кого есть доступ к устройству на уровне root, сможет их увидеть, поскольку root имеет доступ ко всему в файловой системе.
Если вас беспокоит такой доступ к вашим настройкам (или любым данным, записанным вашим приложением), вам следует зашифровать их. Вы можете погуглить.
Попробуйте это https://prashantsolanki3.github.io/Secure-Pref-Manager/ для облегчения работы с общими настройками он также шифрует ключ и значение перед сохранением в настройках.
Пример кода для сохранения значения:
SecurePrefManager.with(this)
.set("user_name")
.value("LoremIpsum")
.go();