IOS9文档目录中的安全性

时间:2015-12-16 05:54:41

标签: ios objective-c security ios9

我正在开发一个应用程序来存储图像(如文件夹锁)安全。 Currenlty图像存储在自己的文档目录中。由于 iOS9 为应用程序的文档目录提供了更高的安全性,我是否需要担心存储时加密图像?或者如果我只是将图像保存在应用程序的文档目录中,它是否安全?

App可以使用密码进行访问。

请自信地建议。

目前我这样存储:

NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"MyPics"];
[[NSFileManager defaultManager] createDirectoryAtPath:stringPath withIntermediateDirectories:NO attributes:nil error:&error];
[data writeToFile:imagepath atomically:YES];

2 个答案:

答案 0 :(得分:0)

你也可以在file.plist中添加密钥

Application supports iTunes file sharing  to NO

默认情况下为NO

答案 1 :(得分:0)

运行iOS9并具有密码的电话获得加密应用程序数据的默认文件保护。以下是Apple的文档

的引用
  

受保护直到首次用户身份验证   (NSFileProtectionCompleteUntilFirstUserAuthentication):此类的行为与完全保护相同,只是在锁定设备时未从内存中删除解密的类密钥。此类中的保护具有与桌面全卷加密类似的属性,并保护数据免受涉及重新启动的攻击。这是未以其他方式分配给Data Protection类的所有第三方应用程序数据的默认类。

虽然,默认值似乎已更改为NSFileProtectionComplete。我刚刚在iOS 9.3.4上运行了一个测试,在文档目录中创建了一个文件,它自动将NSFileProtectionKey属性设置为NSFileProtectionComplete。这意味着当手机被锁定时文件会被加密。

用于创建文件的代码段:

NSURL *theTestFileURL  = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
theTestFileURL = [theTestFileURL URLByAppendingPathComponent:@"testFile.txt"];

if (![[NSFileManager defaultManager] fileExistsAtPath:theTestFileURL.path]) {
    [[@"test content" dataUsingEncoding:NSUTF8StringEncoding] writeToFile:theTestFileURL.path atomically:YES];
}

创建文件的属性:

{
    NSFileCreationDate = "2016-09-05 20:46:28 +0000";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 501;
    NSFileGroupOwnerAccountName = mobile;
    NSFileModificationDate = "2016-09-05 20:46:28 +0000";
    NSFileOwnerAccountID = 501;
    NSFileOwnerAccountName = mobile;
    NSFilePosixPermissions = 493;
    NSFileProtectionKey = NSFileProtectionComplete;
    NSFileReferenceCount = 2;
    NSFileSize = 68;
    NSFileSystemFileNumber = 1113757;
    NSFileSystemNumber = 16777218;
    NSFileType = NSFileTypeDirectory;
}

总而言之,默认情况下,在iOS 9上,当设备被锁定时,您的应用数据会被加密。