Android: как защитить данные в базе данных SQLite? - PullRequest
18 голосов
/ 25 ноября 2011

В настоящее время я разрабатываю игру для Android, которая сохраняет данные в базе данных SQLite.Это не совсем «конфиденциальные» данные, но я не хочу, чтобы пользователи могли изменять их (по очевидным причинам игрового баланса, как это было бы мошенничеством).И довольно просто получить доступ и изменить SQLite db , когда ваш телефон рутирован (на рынке есть множество приложений для этого).

Так что я должен даже беспокоиться об этом, илиСчитаете ли вы, что пользователи с рутированным телефоном могут делать что угодно, включая мошенничество, и это их выбор?Или я могу как-то зашифровать данные, которые я не хочу, чтобы они изменили, или добавить контрольную сумму MD5 или что-то подобное?

Другой подход - отказаться от SQLite.в целом и используйте какие-то бинарные файлы с игровыми данными.

Пожалуйста, дайте мне знать, если у некоторых из вас уже возникали подобные проблемы, и каковы подходы, которым вы следовали, а также "хорошие практики" в Androidсообщество разработчиков игр.

Спасибо.

Ответы [ 4 ]

5 голосов
/ 25 ноября 2011

Root-доступ для всех и безопасность являются взаимоисключающими.

Любое приложение или пользователь с правами root может читать и изменять каждый файл в вашей системе, а также всеосновная память.Это не оставляет много мест для хранения потенциального ключа шифрования для базы данных.

Вы можете скрыть части ключа в исполняемых файлах, файлах конфигурации и т. Д., Но все, что вы можете придумать, будет не более чемобфускация и защита от неясности.

Если пользователь решает предоставить всем root-доступ, это его решение, и ваша задача не состоит в том, чтобы разрабатывать приложения, чтобы предотвратить какой-либо вред, который может быть причинен.

Обновление: Хранение ключей API в Android, достаточно ли обфустификации? - довольно похожая проблема - речь идет о защите ключей API, но в отношении ваших параметров такая же ситуация.

3 голосов
/ 25 ноября 2011

sqlcipher для Android может помочь здесь.

https://guardianproject.info/code/sqlcipher/

2 голосов
/ 28 декабря 2013

Я думаю, что исходя из ваших требований, лучший метод - это использование согласованности данных, например, MD5, счет и время, затем добавление счета и времени и MD5 в таблицу, а затем каждый раз, когда вы хотите использовать эту строку БД, проверяйтеMD5 счета и времени, если один в БД и тот, который рассчитан, совпадают, строка является последовательной, в противном случае она была взломана!

0 голосов
/ 25 ноября 2011

Вы можете найти свое счастье в файлах настроек Смотрите здесь

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