9

我正在寻找加密应用程序中的用户数据,NSFileProtection 机制看起来非常适合这个。

这个SO Question/Answer 线程向我指出了 WWDC 2011 Video Securing iOS Apps ,它给出了通过权利在应用程序中设置数据保护的“好得令人难以置信”的提示(从 33 分钟开始)。

所以,我为我的 iOS 5.x+ 应用程序尝试了这个,并遇到了它抱怨Invalid Entitlements的问题。

我已经通过 iOS 配置门户为特定应用程序配置了数据保护,并更新了我的应用程序配置,所以理论上我应该都设置好了,但我仍然得到错误。

如果我从权利中删除特定的 FileProtectionComplete 设置,应用程序将在没有无效权利错误的情况下运行。

在对此进行调查时,我还看到一些人的应用程序被拒绝(在他们上传二进制文件时),因为这不受支持(或已弃用?)。请注意,我专门询问的是数据保护,而不是存折。

在这个阶段,我在想,也许真的是,“好得令人难以置信”。所以,我即将放弃这个神奇的权利标志,而是使用编程方法,将 NSFileProtectionComplete 添加为写入选项。

但是,在我这样做之前,任何人都可以确认他们已经能够通过使用权利标志成功添加数据保护吗?谢谢。

4

4 回答 4

12

NSFileProtectionComplete不再通过权利支持。相反,它是在配置文件中指定的。

我遇到了与您完全相同的问题。当我尝试在设备上构建和运行时,我收到以下警报:

可执行文件已使用无效权利进行签名。

您的应用程序的代码签名权利文件中指定的权利与您的配置文件中指定的权利不匹配。

(0xE8008016)。

在控制台中,它表现为以下错误:

5 月 6 日 16:18:13 XXXXX 已安装 [54]:权利“DataProtectionClass”具有配置文件不允许的值

最终,我找到了正确的设置。您必须登录到开发人员门户并在与您正在使用的配置文件关联的应用程序 ID 上启用数据保护。见下图:

在此处输入图像描述

于 2013-05-06T21:59:20.427 回答
0

我已经尝试使用权利进行数据保护,并且效果很好。诀窍是确保 Xcode 项目中的权利文件条目与配置文件中的相同。

具体来说,权利文件和配置文件中的以下 2 个设置应该相同:-“com.apple.developer.default-data-protection”-我已将其设置为 NSFileProtectionComplete。“应用程序标识符” - 我没有在标识符中使用通配符,尽管我认为它应该也可以工作。

于 2013-02-26T06:28:58.270 回答
0

使用通配符作为配置文件 ID(即 my.company.app.*)对我不起作用,因此必须创建一个新的完全合格的。它适用于我的 Entitlements.plist,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.default-data-protection</key>
    <string>NSFileProtectionComplete</string>
    <key>get-task-allow</key>
    <false/>
</dict>
</plist>

我的个人资料部分看起来像这样:....

<dict>
    <key>application-identifier</key>
    <string>xxx.my.company.app</string>
    <key>com.apple.developer.default-data-protection</key>
    <string>NSFileProtectionComplete</string>
    <key>get-task-allow</key>
    <false/>
    <key>keychain-access-groups</key>
    <array>
        <string>xxxxxxxx</string>
    </array>
</dict>            

……

于 2013-04-02T19:17:05.647 回答
0

要启用数据保护,请在 Xcode 中目标的 Capabilities 窗格中将其打开。

详细信息:应用分发指南:添加功能

于 2015-04-14T09:04:17.880 回答