我正在开发一个应用程序来存储图像(如文件夹锁)安全。 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];
答案 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上,当设备被锁定时,您的应用数据会被加密。