【发布时间】:2018-04-24 01:48:57
【问题描述】:
我正在尝试加密我的 ios 应用程序中的一些文件,以防止手机越狱的人访问我的应用程序文件的内容。
我正在使用 Apple 文档中的 Encrypting Your App's Files:
https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy/encrypting_your_app_s_files
所以我用这个来写文件
let data = "hello".data(using: .unicode)!
try! data.write(to: fileURL, options: .completeFileProtection)
根据文档,这个选项意味着:
完成。只有在设备解锁时才能访问该文件。
所以在 applicationDidEnterBackground 方法中的 AppDelegate 中,我添加了等待 5 秒(为设备完全锁定提供时间)并访问文件的代码:
Thread.sleep(forTimeInterval: 5.0)
let data = try! Data(contentsOf: fileURL)
print(String(data: data, encoding: .unicode)!)
我在真机上试了一下,锁了手机,等了5秒,数据读取OK!我原以为阅读会失败。
我错过了什么?
PS:这种方法真的能保证越狱设备的文件在文件系统中不可读吗?
【问题讨论】:
-
您不能从知道设备密码的人那里投射文件,无论是否越狱。文件保护保护静态数据免受没有密码的攻击者的攻击。但是,根据您的测试结果,该设备当时似乎没有被锁定。