Временное хранилище для расшифрованной базы данных на Android - PullRequest
1 голос
/ 22 февраля 2011

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

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

В последнее время у меня естьиграл с идеей сохранить все это в памяти, но это кажется очень плохой практикой.База данных на моем тестовом устройстве абсолютно крошечная (менее 100 КБ с массой тестовых данных в ней), но это все еще не дает мне возможности ошибиться, так как пользователь может иметь большую базу данных в дикой природе.Я очень хорошо осознаю тот факт, что, как только кто-то скажет, что «пользователь никогда этого не сделает / не получит», какой-то парень побьет это ограничение в землю.

Итак, поставленный в форме вопроса: где находитсялучшее место на устройстве Android для временного хранения расшифрованной базы данных?Желательно где-то нестабильно между выполнениями приложений, но на данный момент я открыт для предложений.

Заранее спасибо.

1 Ответ

1 голос
/ 23 февраля 2011

Что ж, если вы используете sqlite и стандартные помощники по базам данных Android SQLite, база данных должна находиться в / data / data // database.Это единственное место, откуда классы по умолчанию будут читать его.

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

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

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