Как защитить sqlite дб в Вашем приложении для iPhone базовых данных?

У меня есть Базовое Основанное на данных приложение для iPhone с предзаполненной базой данных только для чтения. Какая защита (если таковые имеются) я могу обратиться к своей базе данных для сокращения вероятности пиратства / база данных, считанная от взломанного iPhone?

Большинство примеров кода для использования предзаполненной sqlite базы данных показывает базу данных, скопированную с комплекта приложений в каталог документов приложения на iPhone, и это абсолютно видимо на взломанном iPhone. Вместо этого я думал об использовании базы данных непосредственно от комплекта приложений следующим образом:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }

    NSURL *storeUrl = [NSURL fileURLWithPath: 
        [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
             @"MyDatabaseName.sqlite"]];

    <... followed by standard persistentStoreCoordinator code ...>

То, когда я поместил точку останова на URL хранилища, это возвращает просто другое расположение файла, которое я предполагаю, так же видимо как каталог документов во взломанном iPhone:

<CFURL 0x139610 [0x38388ff4]>{type = 15, string = file://localhost/var/mobile/Applications/6ACD76F0-396D-4DB1-A46B-B2459A084063/MyiPhoneApp.app/MyDatabaseName.sqlite, base = (null)}

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

Спасибо

6
задан Tofrizer 18 May 2010 в 15:29
поделиться

1 ответ

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

Во-вторых, единственный способ защитить данные - это хранить их в зашифрованном виде на диске и в незашифрованном виде в памяти. Это нелегко сделать с использованием Core Data в его нынешнем виде. Что вы можете сделать, так это зашифровать определенные столбцы базы данных и расшифровать их только в памяти. Это достигается за счет сохранения столбцов в виде двоичных данных, но это также означает, что вы не можете выполнять поиск в этих столбцах.

Обновление

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

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

9
ответ дан 9 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: