Android: как защитить данные в базе данных SQLite?
в настоящее время я разрабатываю игру для Android, которая сохраняет данные в базе данных SQLite. Это не очень "чувствительные" данные, но я не хочу, чтобы пользователи могли изменить это (по очевидным причинам игрового баланса, так как это было бы обманом). И это довольно легко получить доступ и изменить SQLite db когда ваш телефон коренится (есть много приложений для этого на рынке).
поэтому я должен даже беспокоиться об этом, или считают пользователи с корнями телефон может делать все, что они хотят, включая обман, и это их выбор? Или я мог как-то шифровать данные, которые я не хочу, чтобы они изменяли или добавляли контрольная сумма MD5 или что-то подобное?
другим подходом было бы полностью отказаться от SQLite и использовать какие-то двоичные файлы с игровыми данными.
пожалуйста, дайте мне знать, если некоторые из вас уже сталкивались с подобными проблемами, и каковы подходы, которым вы следовали, а также " хорошо практики " в сообществе разработчиков игр для Android.
спасибо.
4 ответов
root доступ для всех и безопасность являются взаимоисключающими.
любое приложение или пользователь с правами root может читать изменить каждый файл в вашей системе, а также вся основная память. Это не оставляет много мест для хранения потенциального ключа шифрования для базы данных.
вы можете скрыть части ключа в исполняемых файлах, файлах конфигурации и т. д., Но все, что вы могли бы придумать, было бы не более чем запутыванием и безопасность через маскировку.
Если пользователь решает предоставить root-доступ всем, это их решение, и это не ваша работа как разработчика приложений, чтобы предотвратить любой вред, который может быть причинен.
обновление: хранение ключей API в Android, достаточно ли обфустикации? довольно похожая проблема-речь идет о защите ключей API, но это та же ситуация в отношении ваших опций.
Я думаю, что на основе вашего требования лучший метод использует согласованность данных, например, MD5 оценка и время, а затем положить счет и время и MD5 в таблицу, то каждый раз, желая использовать эту строку БД проверить MD5 оценки и времени, если один в БД и тот, который рассчитывается одинаковы, строка непротиворечива в противном случае он был взломан!