Можно ли получить доступ к базе данных SQLite Android-приложения на моем телефоне? - PullRequest
5 голосов
/ 23 мая 2011

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

Ответы [ 5 ]

8 голосов
/ 23 мая 2011

База данных хранится в /data/data/your.applications.package/databases.Обычно к этому местоположению может обращаться только пользователь ОС Android, созданный для приложения.Ни один другой пользователь не может получить доступ к этому местоположению, если устройство не имеет root-прав.Тогда любой пользователь может получить доступ к любому месту на телефоне и манипулировать данными.

Поэтому, если вы хотите предотвратить обман пользователей, вам нужно каким-то образом проверить, не изменены ли значения в базе данных.Возможно, вы можете сохранить какой-то отпечаток пальца на сервере, чтобы проверить это.

2 голосов
/ 23 мая 2011

Да, вы можете делать это программно, пока вы являетесь разработчиком.Вот документы для Android для SQLiteDatabase .

Вот несколько ссылок для программной работы с базами данных SQLite:

  1. Из документов Android
  2. Из блога
  3. Из другого блога

База данных SQLite в приложении должна быть помещена в «песочницу» для этого конкретногоприложение, что означает, что никакое другое приложение не сможет получить доступ к этим данным, если разработчик не предоставил доступ к ним с помощью ContentProvider.Поэтому, чтобы ответить на ваш последний вопрос, нет, у участников не должно быть способа манипулировать базой данных, кроме как способами, которые разработчик уже разрешил.

2 голосов
/ 23 мая 2011

Да, пользователи могут просматривать и изменять базу данных при подключении через USB через ADB: http://developer.android.com/guide/developing/tools/adb.html#shellcommands

Обновление:

Это работает только на устройствах с root-доступом или официальных устройствах Google Dev: Почему я получаю доступ к папке данных при использовании adb?

Тем не менее, это позволит пользователям получить доступ к базе данных и изменить результаты игры.Таким образом, вы не можете полагаться на недоступность базы данных ..

0 голосов
/ 23 мая 2011

Если вы не выдаете устройства пользователям и не внимательно следите за тем, что они делают с ними, чтобы быть уверенным в том, что кто-то определится, вам необходимо подписать цифровую подпись в базе данных, используя механизм, скрытый в сильно запутанном коде приложения. И даже это только усложняет.

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

0 голосов
/ 23 мая 2011

Вы можете использовать Proguard , чтобы скрыть ваш код.

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

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