Любой может получить доступ к моей базе данных sqlite3 из приложения в iPhone, когда телефон потерян - PullRequest
3 голосов
/ 11 января 2012

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

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

Мои вопросы:

  1. Может ли кто-нибудь получить доступ к моей локальной базе данных sqlite3, когда телефон потерян?

  2. Есть лилюбой способ зашифровать базу данных и расшифровать ее при необходимости?

  3. Как я буду уверен, что база данных не уязвима.

Благодарю вас

Ответы [ 4 ]

1 голос
/ 17 июля 2015

Попробуйте это ..

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:@"myDatadase.sqlite"];
if (sqlite3_open_v2([dbPath UTF8String], &database, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FILEPROTECTION_COMPLETEUNTILFIRSTUSERAUTHENTICATION, NULL) == SQLITE_OK){
    NSLog(@"db opened securely");
}else{
    NSLog(@"db not opened");
}
0 голосов
/ 11 января 2012

Это ваша проблема, чтобы решить? Лучше всего научить пользователя использовать приложение Find My iPhone для удаленной очистки потерянного iPhone. Опытные пользователи сделают это автоматически для защиты своих контактов и сохраненных паролей в PayPay, eBay и т. Д.

0 голосов
/ 11 января 2012

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

Если ваша база данных содержит конфиденциальную информацию, она должна как минимум храниться с использованием механизмов безопасного хранения файлов iOS (при условии, что ОС поддерживает это ... IIRC - это iOS 4 +).

Для sqlite, на ваш вызов sqlite3_open_v2 () передайте один из довольно громоздких

SQLITE_OPEN_FILEPROTECTION_COMPLETE ...

опции для включения безопасного хранения файлов. Эти константы объявлены вместе с остальными в sqlite3.h.

0 голосов
/ 11 января 2012
  1. Любой может получить доступ к вашему файлу, если сможет достать телефон (что не так сложно, например, с помощью iPhone Explorer)

  2. Я гуглил и нашел http://sqlcipher.net/. Взгляните.

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

...