Android SharedPreference безопасность - PullRequest
101 голосов
/ 12 февраля 2012

Интересно о безопасности общих настроек.

Можно ли получить доступ к общим настройкам, даже если они были созданы в MODE_PRIV (0)?
Можно ли перечислить все доступные общие настройки и затем извлечь все настройки из других приложений?
Является ли sharedpreferences хорошим местом для размещения конфиденциальных данных, таких как пароль или токен авторизации?

Спасибо

Ответы [ 4 ]

214 голосов
/ 12 февраля 2012

Общие настройки хранятся в виде файла в файловой системе на устройстве.По умолчанию они хранятся в каталоге данных приложения с установленными разрешениями файловой системы, которые позволяют только UID, с которым работает конкретное приложение, получать к ним доступ.Таким образом, они являются частными, поскольку права доступа к файлам в Linux ограничивают доступ к ним, так же, как и в любой системе Linux / Unix.

Любой, имеющий доступ к устройству на уровне root, сможет их видеть как rootимеет доступ ко всему в файловой системе.Кроме того, любое приложение, работающее с тем же UID, что и приложение-создатель, сможет получить к ним доступ (это обычно не делается, и вам нужно предпринять определенные действия, чтобы два приложения работали с одним и тем же UID, так что это, вероятно, не большойбеспокойство).Наконец, если кто-то смог смонтировать файловую систему вашего устройства без использования установленной ОС Android, он также мог бы обойти разрешения, ограничивающие доступ.

Если вас беспокоит такой доступ к вашим предпочтениям (или любым записанным данным)приложением), тогда вы захотите зашифровать его.Если вас это беспокоит, вам нужно будет точно определить, какой уровень защиты необходим для того уровня риска, который вы видите.Об этом очень подробно говорится в Application Security для платформы Android , опубликованном в декабре 2011 года (отказ от ответственности: я автор этой книги).

24 голосов
/ 10 марта 2014

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

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

https://github.com/sveinungkb/encrypted-userprefs

Как говорят другие, каждый может получить к нему доступ, но в этом случае никтоможет читать данные внутри него, поскольку он зашифрован.Так что это безопасно. Для Utmost безопасности я предлагаю генерировать ключ, используемый для шифрования во время выполнения, а не жестко его кодировать.Есть много способов сделать это:)

13 голосов
/ 12 февраля 2012

Обычно нет, к ним не могут получить доступ другие приложения, однако следует помнить, что SharedPreferences хранятся в виде файлов XML в каталоге /data/data/, что, по сути, означает, что любое приложение с привилегии суперпользователя на устройстве с root-доступом могут получить доступ к SharedPreference s, даже если они были созданы с помощью MODE_PRIV

2 голосов
/ 01 апреля 2019

Можно ли получить доступ к общим настройкам, даже если они были созданы в MODE_PRIV (0)?

По коду №. Но вы можете получить приложениефайл, если у вас есть привилегированные права суперпользователя.

Можно ли перечислить все доступные общие предпочтения, а затем получить все настройки из других приложений?

Если вы являетесь суперпользователем (корневые устройства)затем вы можете извлечь все личные файлы приложения.

Является ли sharedpreferences хорошим местом для размещения конфиденциальных данных, таких как пароль или токен авторизации?

Нет.Это может быть легко взломано.Если вы хотите поместить какие-либо конфиденциальные данные в общий файл настроек, вы можете зашифровать данные и сохранить их.Вы можете хранить свой ключ шифрования в NDK / server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...