Как сохранить файлы основных данных в личной папке

Я выпустил приложение iOS для пользователя через дистрибутив Adhoc. Пользователь установил приложение, и они могут просматривать файлы, такие как файлы sqlite, изображения, хранящиеся в каталоге документов. Доступ к нему можно получить через сторонние приложения, такие как iExplorer, iMazing.

Вопросы:

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

2. Есть ли библиотека для шифрования основных данных, которую другие приложения не должны читать?

Я пробовал следующие решения, но это не помогает.

1. Я использовал атрибуты защиты данных - NSFileProtectionComplete и NSFileProtectionCompleteUnlessOpen. Но все же данные доступны для чтения, даже если устройство заблокировано.

2. Я пробовал библиотеку SQLCipher для шифрования данных, но она не поддерживает базовую структуру данных.

Пожалуйста, совет и спасибо.

1 ответ

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

let appSupportDirURL = FileManager.default.urls(for:.applicationSupportDirectory, in:.userDomainMask).last

Вам нужно создать этот каталог в do/catch при первом использовании:

try FileManager.default.createDirectory(at: appSupportDirURL, withIntermediateDirectories: true, attributes: nil)

Теперь добавьте имя вашего файла БД в этот путь:

let storeURL = appSupportDirURL.appendingPathComponent("MyDatabaseName")

И, наконец, используйте этот URL, когда вы звоните addPersistentStore(ofType:configurationName:at:options:) на ваше NSPersistentStoreCoordinator создать БД на диске.

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

Другие вопросы по тегам