iOS:当我从iMazing打开我的应用程序时,如何隐藏和保护读取并保护mac在特定文件夹上的副本?

问题描述 投票:1回答:3

使用Swift或Obj-C,我已经完成了一个应用程序,并将敏感数据存储在应用程序的特定文件夹中。现在,我希望用户无法看到该文件夹​​,也无法将其复制到他的计算机上,或者最好,用iMazing等软件隐藏它。

我试图添加一个“。”,这根本不是解决方案:How to hide folder in NSDocumentsDirectory and disallow backup via iTunes & iCloud

我试图将它存储在Library文件夹中,这也不是解决方案,因为它可以在iMazing中访问:How to hide folders created in Document Directory in ios?

enter image description here

我不想使用该应用程序支持iTunes文件共享,因为我需要使用iMazing从应用程序访问文档文件夹。

是否存在一种智能和低分辨率的解决方案,允许在iPad中存储一些无法通过iMazing访问的文件而不是极端,因为“全有或全无”应用程序支持iTunes文件共享选项?

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;
if (! [[NSFileManager defaultManager] fileExistsAtPath:libraryDirectory isDirectory:&isDir] && isDir == NO) {
    [[NSFileManager defaultManager] createDirectoryAtPath:libraryDirectory withIntermediateDirectories:NO attributes:nil error:&error];
}

NSString *pathLibToCreate = [libraryDirectory stringByAppendingPathComponent:@"testDoc"];
NSString *pathDocToCreate = [[self documentsDirectory] stringByAppendingPathComponent:@"testDoc"];

if (![[NSFileManager defaultManager] fileExistsAtPath:pathLibToCreate]) {
    [[NSFileManager defaultManager] createDirectoryAtPath:pathLibToCreate withIntermediateDirectories:NO attributes:nil error:&error];
}

if ([[NSFileManager defaultManager] fileExistsAtPath:pathDocToCreate]) {
    [[NSFileManager defaultManager] removeItemAtPath:pathDocToCreate error:nil];
}
NSError *copyError = nil;
if (![[NSFileManager defaultManager] copyItemAtPath:pathLibToCreate toPath:pathDocToCreate error:&copyError]) {
    NSLog(@"Error copying files: %@", [copyError localizedDescription]);
}

提前致谢。

ios objective-c file-copying
3个回答
1
投票

如果您使用“文件共享”权限为NO,并且如果您使用分发配置文件,则无法在Amazing中查看您的文件。我想这是因为您使用了应用程序的开发人员配置文件,然后您就可以查看这些文件了。


1
投票

我认为这是不可能的,至少如果用户有一个越狱设备,他可以访问系统上的所有文件。

为了防止用户访问文件的内容,一种选择可以是加密文件的内容。使用CommonCryptor框架应该是一项简单的任务。

对于加密数据库,您可以使用SQLCipher


1
投票

我是iMazing的开发者之一。事实上,接受的答案是正确的:iMazing和其他类似工具将在开发时提供对应用程序沙箱的访问。但还有3个案例需要注意:

越狱装置

iMazing将显示所有文件,读/写访问权限。

在iOS 8.3之前运行iOS版本的设备

同样在这里 - 在iOS 8.3之前,我们可以访问应用程序沙箱,也可以读/写。

通过iTunes备份访问

iMazing和类似的工具有备份浏览器,可以让用户看到应用程序沙箱。库和文档文件夹,而不是Caches或tmp。如果你真的想要安全,你需要明确exclude files from the backup。当然,这有很多缺点......

© www.soinside.com 2019 - 2024. All rights reserved.