Можно ли настроить уровень защиты файла SQLite, сгенерированного для основных данных?Шифрование основных данных с помощью MagicalRecord
Мне нужно использовать уровень NSFileProtectionComplete
.
Любые идеи?
Можно ли настроить уровень защиты файла SQLite, сгенерированного для основных данных?Шифрование основных данных с помощью MagicalRecord
Мне нужно использовать уровень NSFileProtectionComplete
.
Любые идеи?
Посмотрите на линии, где вы делаете addPersistentStoreWithType:configuration:URL:options:
NSURL *storeURL = ...;
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:...];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:nil
error:&error])
{
NSLog(@"Add persistent store failed: %@", error);
}
Затем добавить:
NSDictionary *attributes = @{NSFileProtectionKey: NSFileProtectionComplete};
if (![[NSFileManager defaultManager] setAttributes:attributes
ofItemAtPath:path
error:&error]) {
NSLog(@"File protection failed: %@", error);
}
Имейте в виду, что вы не можете использовать базу данных в фоновом режиме, рекомендуется использовать NSFileProtectionCompleteUnlessOpen:
NSFileProtectionComplete
: Файл хранится в зашифрованный формат на диске и не может быть прочитан или записан, пока устройство заблокировано или загружено.NSFileProtectionCompleteUnlessOpen
: Файл хранится в зашифрованном виде на диске. Файлы могут быть созданы, когда устройство заблокировано, но после закрытия невозможно открыть снова, пока устройство не будет разблокировано. Если файл открывается при разблокировке, вы можете продолжить доступ к файлу в обычном режиме, даже если пользователь заблокирует устройство. Существует небольшое ограничение производительности при создании и открытии файла, хотя не при написании или чтении. Это можно смягчить, изменив защиту файла на NSFileProtectionComplete
, когда устройство разблокировано.Обратите внимание, что еще проще и рекомендуется просто включить защиту данных для всего приложения (при условии, что вы можете адаптироваться к проблемам с фоновой информацией): http://stackoverflow.com/questions/18326225/ fmdb-and-encryption/18414100 # 18414100 –
Спасибо! Хотя я использую MagicalRecord, это помогло мне! :) –
Как это делается с MagicalRecord? – lostintranslation
Здесь задан вопрос (http://stackoverflow.com/questions/18365375/ios-magical-record-sqlcipher) по sqlcipher и магической записи. Возможно, это обеспечит адекватное решение. – casademora