2013-08-27 2 views
3

Можно ли настроить уровень защиты файла SQLite, сгенерированного для основных данных?Шифрование основных данных с помощью MagicalRecord

Мне нужно использовать уровень NSFileProtectionComplete.

Любые идеи?

+0

Здесь задан вопрос (http://stackoverflow.com/questions/18365375/ios-magical-record-sqlcipher) по sqlcipher и магической записи. Возможно, это обеспечит адекватное решение. – casademora

ответ

3

Посмотрите на линии, где вы делаете 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, когда устройство разблокировано.
+0

Обратите внимание, что еще проще и рекомендуется просто включить защиту данных для всего приложения (при условии, что вы можете адаптироваться к проблемам с фоновой информацией): http://stackoverflow.com/questions/18326225/ fmdb-and-encryption/18414100 # 18414100 –

+0

Спасибо! Хотя я использую MagicalRecord, это помогло мне! :) –

+1

Как это делается с MagicalRecord? – lostintranslation

Смежные вопросы