我已经通过Adhoc发行版向用户发布了iOS应用程序。用户已经安装了应用程序,他们可以查看文件,如sqlite文件,图像存储在文档目录。这可以通过第三方应用程序(如iExplorer、iMazing )进行访问。
问题:
1.是否可以将数据存储在私有目录中,这些数据不能被其他来源或软件访问。
2.是否有任何库对核心数据进行加密,其他应用程序不应该读取这些库?
我已经尝试过使用,以下解决方案,,但这无助于解决方法。
1.使用了数据保护属性NSFileProtectionComplete和NSFileProtectionCompleteUnlessOpen。但是,即使设备被锁定,数据仍然是可读的。
2.我尝试过SQLCipher库对数据进行加密,但它不支持核心数据框架。
请给我建议,谢谢。
发布于 2018-10-22 16:20:17
您应该使用Application目录来安全地存储DB文件。您可以获得该文件夹的路径如下:
let appSupportDirURL = FileManager.default.urls(for:.applicationSupportDirectory, in:.userDomainMask).last但是,您需要在第一次使用do/catch中创建该目录:
try FileManager.default.createDirectory(at: appSupportDirURL, withIntermediateDirectories: true, attributes: nil)现在将您的DB文件名添加到该路径:
let storeURL = appSupportDirURL.appendingPathComponent("MyDatabaseName")最后,当您在您的addPersistentStore(ofType:configurationName:at:options:)上调用NSPersistentStoreCoordinator来创建磁盘上的DB时,请使用该url。
我不知道有任何库可以帮助您加密整个Core Data DB,但我实际上并不认为一旦您的DB文件无法访问--至少对于具有常规安全性要求的应用程序,您不需要这样做。
https://stackoverflow.com/questions/52926601
复制相似问题