【问题标题】:Security in IOS9 Document DirectoryIOS9 文档目录中的安全性
【发布时间】:2015-12-16 05:54:40
【问题描述】:

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

应用程序只能通过密码访问。

请放心指教,谢谢。

目前我是这样存储的:

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];

【问题讨论】:

  • 您想要什么安全性?你有什么顾虑?
  • 如果我想保护存储足够安全的图像? @rmaddy
  • 保护图像免受什么影响?你不是很清楚。你想防止什么?您是否试图阻止设备用户看到图像?您是否试图阻止设备用户删除或更改图像?什么?具体一点。
  • 如果我将图像保存在应用程序的目录中,我的应用程序就像一个文件夹储物柜,另一方可以在不登录我的应用程序的情况下访问图像吗?@rmaddy
  • 任何有权访问设备的人都可以轻松访问图像,而无需使用您的应用程序。除非您加密文件,否则无论您使用哪个文件夹都是如此。

标签: ios objective-c security ios9


【解决方案1】:

你也可以在file.plist中添加key

Application supports iTunes file sharing  to NO

默认是NO

【讨论】:

  • 谢谢,我也会这样做的。@vaibby
  • 这与安全性有什么关系?
【解决方案2】:

运行 iOS9 并具有密码的手机会获得对应用程序数据进行加密的默认文件保护。这是来自 Apple 文档的引述

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

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

用于创建文件的sn-p:

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 上,默认情况下,当设备锁定时,您的应用数据会被加密。

【讨论】:

    猜你喜欢
    • 2017-06-18
    • 2010-10-16
    • 2010-12-08
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多