首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试iOS数据保护?

如何测试iOS数据保护?
EN

Stack Overflow用户
提问于 2014-04-17 15:59:16
回答 2查看 1.4K关注 0票数 1

我有一个应用程序,我已经在开发人员门户和我的目标的项目功能部分启用了数据保护。我已经创建了新的配置文件,并在Xcode中将它们同步到我的帐户。然而,当我构建我的项目和下载文件时,我仍然可以使用IExplorer (一个用于浏览iOS设备上的文件系统的工具)来查看它们。我是不是遗漏了什么?我知道当设备被锁定并有密码时,文件是无法访问的。我的印象是,现在所有这些都是使用Xcode5.1自动处理的,所以当我编写文件时,没有Entitlements.plist文件或任何编码来处理这些问题。

更新

代码语言:javascript
复制
        [[NSFileManager defaultManager] createFileAtPath:self.filePath contents:nil attributes:[Utils defaultFileProtectionAttributesDictionary]];

        @synchronized(self.fileHandle)
        {
            self.fileHandle = [NSFileHandle fileHandleForWritingAtPath:self.filePath];
        }

此代码用于在下载文件时创建和写入文件。我想知道NSFileHandle是否有自己的内部文件创建方法。这是Utils代码:

代码语言:javascript
复制
+ (NSDataWritingOptions)defaultFileProtection
{
    NSDataWritingOptions result = 0;
    if (&NSFileProtectionCompleteUnlessOpen != nil)
        result = NSDataWritingFileProtectionCompleteUnlessOpen;
    return result;
}

+ (NSString*)attributeStringForFileProtection:(NSDataWritingOptions)protection
{
    NSString* result = nil;
    switch (protection & NSDataWritingFileProtectionMask) {
        case NSDataWritingFileProtectionNone:
            result = NSFileProtectionNone;
            break;

        case NSDataWritingFileProtectionComplete:
            result = NSFileProtectionComplete;
            break;

        case NSDataWritingFileProtectionCompleteUnlessOpen:
            result = NSFileProtectionCompleteUnlessOpen;
            break;

        case NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication:
            result = NSFileProtectionCompleteUntilFirstUserAuthentication;
            break;

        default:
            break;
    }
    return result;
}


+ (NSDictionary*)defaultFileProtectionAttributesDictionary
{
    static NSDictionary* sDict = nil;

    NSDataWritingOptions defaultProtection = [self defaultFileProtection];
    NSString* attributeString = [self attributeStringForFileProtection:defaultProtection];

    if (attributeString && !sDict)
        sDict = @{NSFileProtectionKey: attributeString};

    return sDict;
}

如果我对其进行调试,我可以看到它使用NSFileProtectionCompleteUnlessOpen作为其首选保护技术。但是,不是吗?或者NSFileHandle只是放弃了所有这些工作?

更新更新

似乎您确实需要为NSFileHandle创建要处理的文件。所以我还是被卡住了。为什么数据保护似乎不起作用?

EN

回答 2

Stack Overflow用户

发布于 2014-04-17 22:52:01

现在这个问题已经解决了。它需要重新生成配置文件并将其同步回Xcode。我试了几次才让它起作用。同样值得注意的是,我必须在Xcode的目标功能范围内以及Apple Developer Portal的App ID编辑中启用数据保护。然后,我必须确保我完全重新生成了所有的配置配置文件。

此外,IExplorer有点欺骗性:它会向你显示文件结构,但一旦设备被锁定并对iPad应用了密码,我就无法预览或复制设备上的文件。

票数 0
EN

Stack Overflow用户

发布于 2014-04-17 16:57:36

据我所知,只有当用户在其设备http://support.apple.com/kb/HT4175?viewlocale=en_US&locale=en_US上设置密码时,数据保护才会起作用

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23127687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档