我希望在应用程序中加密用户数据,而NSFileProtection机制看起来非常适合这一点。
这个SO Question / Answer thread给我指出了WWDC2011视频Securing iOS Apps,它给出了通过授权在整个应用程序中设置数据保护的“好得令人难以置信”的提示(参见33分钟)。
所以,我在我的iOS 5.x+应用程序上尝试了一下,结果遇到了一个问题,它抱怨Invalid Entitlements。
我已经通过iOS配置门户为特定的应用程序配置了数据保护,并更新了我的应用程序配置,所以理论上我应该都设置好了,但我仍然收到错误。
如果我从权利文件中删除特定的FileProtectionComplete设置,应用程序运行时不会出现无效权利文件错误。
在调查的过程中,我还看到一些人正在使用他们的应用程序rejected (在他们上传二进制文件的时候),因为它不受支持(或被弃用?)。请注意,我特别询问的是数据保护,而不是Passbook。
在这个阶段,我在想,也许它真的是“太好了,以至于不可能是真的”。因此,我将放弃这个神奇的授权标志,转而使用编程方法,将NSFileProtectionComplete添加为写选项。
然而,在我这样做之前,有人能确认他们已经能够通过使用授权标志成功地添加数据保护吗?谢谢。
发布于 2013-05-07 05:59:20
不再通过授权来支持NSFileProtectionComplete。相反,它是在配给配置文件中指定的。
我遇到了和你完全一样的问题。当我试图在设备上构建和运行时,我收到了以下警告:
可执行文件的签名权限无效。
在应用程序的代码签名权利文件中指定的权利与设置配置文件中指定的权利不匹配。
(0xE8008016)。
在控制台中,它显示为以下错误:
5月6日16:18:13 XXXXX installd54 :权利文件'DataProtectionClass‘具有设置配置文件不允许的值
最终,我找到了合适的设置。你必须登录到开发人员门户,并在与你正在使用的配给配置文件关联的应用id上启用数据保护。如下图所示:

发布于 2013-02-26 14:28:58
我尝试过使用授权来保护数据,它工作得很好。诀窍是确保Xcode项目中的授权文件条目与配置配置文件中的条目相同。
具体地说,授权文件和配置文件中的以下2个设置应该相同:- "com.apple.developer.default-data-protection“-我已将其设置为NSFileProtectionComplete。"application- identifier“-我没有在标识符中使用通配符,尽管我认为它也应该可以工作。
发布于 2013-04-03 03:17:06
对于我来说,使用通配符作为配置文件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> ……
https://stackoverflow.com/questions/14734758
复制相似问题