Мне нужно разработать приложение как для iOS, так и для Android. Это приложение использует небольшую базу данных sqlite с конфиденциальными данными, и в зависимости от ввода пользователя она обрабатывает некоторые данные. После того, как этот процесс будет выполнен, база данных больше не будет доступна, если пользователю не потребуется вводить новый вход (это не вероятно, что это происходит).Самая безопасная стратегия для мобильной базы данных
Поскольку база данных имеет конфиденциальные данные, я должен ее защитить. Я знаю, что невозможно получить полную защиту, но я хотел бы сделать жизнь более трудной для возможного злоумышленника.
И так как я не знаю слишком много о безопасности, я не уверен, что было бы лучшей альтернативой с учетом «трудности/безопасности».
Я думал, что в двух альтернатив:
1) Включить базу данных в приложениях и зашифровать или запутать его.
Но я думаю, что получить базу данных с корневым Android не составит труда.
2) Храните базу данных на сервере, каждый раз, когда пользователь вводит ввод, приложение загружает базу данных, процесс выполняется, после чего я удаляю базу данных из приложения.
Но процесс занимает 5-10 минут, и, возможно, этого достаточно, чтобы получить базу данных из приложения, поэтому мне пришлось бы добавить такую же защиту, как в 1), плюс защиту на сервере.
Какой был бы лучший вариант (сложный/безопасный)? Будут какие-то другие варианты?
Я пробовал несколько поисков Google, но я запутался со всей этой информацией, и я хотел бы попробовать с огромным признанием этого сообщества.
ОБНОВЛЕНО:
Ну, читая ваши ответы я склонен иметь бэкенд и не загружать базу данных в приложении. Это не предпочтительное решение клиента, но, похоже, это лучше всего, поэтому я попытаюсь убедить его. В любом случае, из-за типа процесса, которое приложение должно делать, я не уверен, возможно ли это с помощью бэкэнд. Поскольку это совершенно иной вопрос, который я хотел бы спросить его в другом потоке: https://stackoverflow.com/questions/29942688/remote-sqlite-queries-from-app
NEW UPDATE:
Я продолжаю думать в этом, и я не найти хорошее решение, потому что процесс слишком сложен. Я подумал о чем-то, что мне хотелось бы знать, если это возможно, или если это не имеет смысла (извините, но я не слишком много знаю о развитии бэкэнд).
SERVER -> моя база данных SQLite & веб-сервисы PHP
DEVICE -> а TXT файл с вводимыми пользователем (20Mb)
- Device: В устройстве текстовый файл сжат (10Мб)
- Устройство: приложение отправляет txt-файл на сервер через веб-службу POST.
- Сервер: Этот txt-файл хранится на сервере.
- Сервер: этот файл txt распаковывается.
- Сервер: Этот txt-файл загружается в новую таблицу InputTable внутри моей базы данных sqlite.
- Сервер: Создана новая таблица UserFinalDataTable (почти 10000 строк), создающая множество запросов с использованием InputTable и остальной части моей базы данных.
- Сервер: UserFinalDataTable преобразуется в JSON и отправляется обратно на устройство в качестве ответа на веб-службу, вызываемой на этапе 2.
- Устройство: приложение получает этот JSON и преобразует его в что-то полезное для приложения.
Возможно ли это или любые (если не все) шаги выполнить?
И сервер не может быть взломан? –
Я боялся этого. Я отказался от этого параметра, потому что мой клиент не хочет иметь поддержку бэкэнд, он принимает только «backend» minimun, только для загрузки базы данных, он не хочет никакой аутентификации пользователя или хранения каких-либо пользовательских данных. – Wonton
Да @BojanKseneman, конечно, но я всегда думал, что взломать Android-приложение проще (безусловно), чем взломать сервер. Из-за этого я думаю об этом. – Wonton