防止应用程序缓存在iOS上提取文件

时间:2012-04-10 10:58:38

标签: iphone ios ipad data-protection

我有一个iOS应用程序,它将所有下载的*.pdf文件存储在其缓存中。有没有办法防止这些数据被提取?加密还是其他什么?提前谢谢。

4 个答案:

答案 0 :(得分:2)

有很多方法可以加密文件,我相信每个人都会对最佳方法有所了解。

在我最近一直在努力的项目中,我们一直在使用CommonCrypto(https://github.com/AlanQuatermain/aqtoolkit)。只需获取任何NSData,对其进行加密,然后将其保存到文件中,反之亦然。您甚至可以通过继承NSValueTransformer来编写一个简单的Transformer,它将所有加密抽象到一个位置,您再也不用担心它了。

答案 1 :(得分:1)

您可以使用密码保护PDF文件。我假设您创建的PDF文件不在应用程序中,而是在外部。例如,您可以在Mac OS X中使用 Preview.app 来使用密码保护现有PDF文件(点击Cmd-P,然后在打印菜单中选择PDF,您可以在那里设置安全选项或者更简单:在菜单中选择导出...)

在iOS中,您可以打开PDF文件,如下所示:

CGPDFDocumentRef documentRef = CGPDFDocumentCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:filePath]);
if (!CGPDFDocumentIsUnlocked(documentRef))
    CGPDFDocumentUnlockWithPassword(documentRef, password);
...

答案 2 :(得分:0)

实际上有2个文档文件夹,您的应用可以在其中存储内容。一个可以被提取,一个是私有的。检查此票证中接受的答案。

Access files in "private Documents" folder transferred with iTunes

答案 3 :(得分:0)

假设您希望在越狱设备上提取PDF文件,最直接的方法将是以下几行:

  • 在首次启动应用时生成随机字符串
  • 将随机字符串保存在您自己应用的沙箱中的状态文件中的NSUserDefaults
  • 使用此随机字符串使用确定性但难以找出的算法创建密钥
  • 使用此密钥,您不存储任何地方但始终按需生成,使用AES或类似方法对您的缓冲区进行对称加密

您可能会发现源代码here非常有用。