У меня проблема. Я использую файл xyz.db, который хранится в папке активов. Я копирую все данные из xyz.db в базу данных приложения, которая хранится в data/data/com.xyz/abc.sqlite в папке хранилища. Теперь я хочу защитить файл xyz.db актива. Т.к. его можно легко извлечь из apk реверс-инжинирингом. Пожалуйста, помогите мне защитить файл базы данных моей папки активов.
Как защитить файл базы данных Android?
Ответы (3)
Вы можете выполнить следующее, чтобы относительно затруднить доступ к данным в БД.
- Защищенный паролем ZIP-файл, содержащий базу данных, которая должна быть извлечена во время выполнения.
- Зашифруйте файл с помощью симметричного ключа и снова расшифруйте его во время выполнения.
- Используйте sqlcipher, который выполняет шифрование данных в состоянии покоя.
В обоих вышеперечисленных случаях вам нужно будет позаботиться о сохранении пароля или ключа. Не существует надежного способа защитить файл, но описанное выше потребует больше усилий и должно быть добавлено в качестве базовой защиты.
У вашей проблемы нет окончательного решения. Любая техника, которую вы будете использовать, может быть побеждена решительным опытным злоумышленником.
Вы должны признать, что если вы хотите сохранить базу данных xyz.sql в своем файле apk, а затем хотите, чтобы ваше приложение использовало ее, то кто-то, кто реверсирует ваше приложение, также сможет получить ее. В основном просто потому, что текстовая информация в определенный момент будет доступна на телефоне.
Надеюсь, я был достаточно чистым
Помните о безопасности
Как обычно в Android, права доступа к файлу базы данных определяют, кто может использовать вашу базу данных. Если вы будете следовать стандартному способу, представленному в следующих сообщениях этой серии, ваш файл базы данных будет расположен в частном каталоге вашего приложения. Это означает, что ваше приложение владеет файлом базы данных, и никто другой не может получить к нему доступ. Даже используя другие менее распространенные способы создания базы данных, вы можете предоставить доступ только к файлу. Таким образом, другие могут получить доступ ко всей вашей базе данных или ни к чему. Там нет никакого среднего.
Still:
Вы никогда не должны полагаться на то, что данные в базе данных защищены от посторонних глаз. Любые конфиденциальные данные должны быть зашифрованы. Очень конфиденциальные данные вообще не должны храниться на устройстве. Имейте в виду, что если устройство будет потеряно, любой неправильный искатель устройства может получить доступ к файлу базы данных, а также к вашему приложению. На корневом устройстве все файлы могут быть прочитаны. Такие приложения, как SQLite Editor, упрощают чтение даже конфиденциальных данных, если они не зашифрованы:
- В тех случаях, когда конфиденциальность данных имеет первостепенное значение, вы должны вернуться к защищенным службам или заставить пользователя вводить секрет каждый раз перед шифрованием и сохранением данных или их чтением и дешифрованием соответственно. источник