如何安全地在iOS上存储私人文件

时间:2017-01-19 02:08:39

标签: ios objective-c security internal-storage nslibrarydirectory

在Android上,我可以使用Context.openfileoutput将文件存储到受到相当保护的文件中。它将保存到特定于我的应用程序的内部磁盘,这是其他应用程序无法访问的,唯一的方法是通过连接调试器/生根设备。这不是100%防黑客,但它已经足够好了。

这是iOS上存在的东西吗?

我读过https://developer.apple.com/library/content/qa/qa1699/_index.html,但这样安全吗?就像我猜它看起来像

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
                           NSString *librariesDirectory = [paths objectAtIndex:0];
                           NSLog(@"%@", librariesDirectory);
                           NSString *filePath = [NSString stringWithFormat:@"%@/%@/%@", librariesDirectory,@"Private", @"internal_image.jpg"];

此文件是

  • 其他应用无法访问
  • 不备份到icloud
  • 对应用程序很容易看到,但不是最终用户

2 个答案:

答案 0 :(得分:1)

如果您有敏感信息要存储,那么存储它的唯一真正安全的地方就是在钥匙链中。显然,您不希望将所有数据都粘贴在密钥链中,因此只需在其中存储加密密钥并加密您的信息并将其存储在文档目录中。如果有人访问文档目录,例如从iCloud备份访问,他们将无法在不解密的情况下读取文件内容。

答案 1 :(得分:0)

1)使用您的数据创建文件

2)生成高熵加密密钥并加密文件

3)将加密密钥保存到您的服务器

4)将加密的文件保存到库文件夹,并将NSURLIsExcludedFromBackupKey标志设置为true

•)现在,文件位于不会备份到iCloud的位置,无法由其他应用访问,可以由用户访问,但已加密,因此他们无法对其进行任何操作。


有关NSURLIsExcludedFromBackupKey的好信息:https://stackoverflow.com/questions/27216189/files-disappearing-from-nslibrarydirectory/27309392#27309392