iOS未强制加密安全参数:越狱环境下App文件加密实现咨询
iOS App文件加密防越狱访问实践
最近我在给iOS App做文件加密,核心需求就是防止越狱设备用户随便扒App里的文件内容。特意参考了苹果官方的文件加密指南,写了这段代码来写入加密文件:
let data = "hello".data(using: .unicode)! try! data.write(to: fileURL, options: .completeFileProtection)
根据官方文档的说明,.completeFileProtection这个选项是最严格的文件保护级别:当设备处于锁定状态时,文件会被完全加密,只有在设备解锁且App处于活跃状态的情况下,才能正常读取或写入这个文件。
不过这里有几个坑得注意:
- 首先必须在Xcode里开启Data Protection能力,不然这个加密选项根本不会生效。具体就是在项目的Capabilities里找到Data Protection,把它打开,一般选"Complete"级别就对应我们用的这个选项。
- 虽说原生加密能挡住大部分普通越狱用户,但要是碰到技术很强的越狱使用者,还是有被绕过的可能——不过这已经是苹果提供的最靠谱的原生防护手段了。
- 如果你的App有后台访问文件的需求,那
.completeFileProtection就不太合适了,可以换成.completeFileProtectionUnlessOpen(文件打开后后台也能访问)或者.completeFileProtectionUntilFirstUserAuthentication(设备第一次解锁后,后台也能访问),根据自己的业务场景选。
还有个小提醒:代码里的try!别在生产环境用,换成do-catch来处理写入错误,不然哪天写入失败直接崩溃就麻烦了。
内容的提问来源于stack exchange,提问作者Martin Massera
相关产品推荐
相关产品推荐

