iOS:当我从 iMazing 打开我的应用程序时,如何在 mac 特定文件夹上隐藏和防止读取以及防止复制?

iOS: When I open my app from iMazing, how to hide and protect from read and protect from copy on the mac a specific folder?

用Swift或者用Obj-C,我做了一个app,我把敏感数据存储在app的特定文件夹里。现在,我希望用户无法看到该文件夹​​,也无法将其复制到他的计算机上,或者最好使用 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?

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

是否存在允许将某些文件存储在 iPad 中的一些文件,这些文件无法使用 iMazing 访问并且不会因为 "all or nothing" 应用程序支持 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]);
}

提前致谢。

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

要防止用户访问文件内容,一种选择是加密文件内容。使用 CommonCryptor 框架应该是一件容易的事。

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

如果您使用 "File Sharing" NO 权限并且使用分发配置文件,您将无法在 Amazing 中查看您的文件。 我想这是因为您为您的应用程序使用了开发者资料,然后您就可以查看这些文件了。

我是 iMazing 的开发者之一。事实上,公认的答案是正确的:iMazing 和其他类似工具将在开发过程中提供对应用程序沙盒的访问权限。但是还有3种情况需要注意:

越狱设备

iMazing 将显示所有文件,read/write 访问。

设备 运行 iOS 早于 iOS 8.3

的版本

此处相同 - 在 iOS 8.3 之前,我们也可以访问应用程序沙箱,read/write。

通过 iTunes 备份访问

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