9

アプリでユーザー データを暗号化しようとしていますが、NSFileProtection メカニズムはこれに最適です。

このSO Q/A スレッドは、WWDC 2011 Video Securing iOS Apps を指摘してくれました。これは、アプリ全体で資格を介してデータ保護を設定するという「あまりにも良い」ヒントを与えてくれました (33 分から参照)。

そこで、iOS 5.x+ アプリでこれを試してみたところ、 Invalid Entitlementsについて不平を言う問題に遭遇しました。

iOS プロビジョニング ポータルを介して特定のアプリのデータ保護を構成し、アプリのプロビジョニングを更新したので、理論上はすべて設定されているはずですが、それでもエラーが発生します。

Entitlement から特定の FileProtectionComplete 設定を削除すると、Invalid Entitlement エラーなしでアプリが実行されます。

これを調査したところ、アプリがサポートされていない (または廃止された?) ため、アプリが (バイナリをアップロードした時点で)拒否されていることもわかりました。Passbook ではなく、データ保護について具体的に質問していることに注意してください。

この段階で、私は本当に「うますぎる」と思っています。したがって、この魔法の資格フラグをあきらめ、代わりにプログラムによる方法を使用して、書き込みオプションとして NSFileProtectionComplete を追加しようとしています。

ただし、それを行う前に、資格フラグを使用するだけでデータ保護を正常に追加できたことを誰か確認できますか? ありがとう。

4

4 に答える 4

12

NSFileProtectionCompleteエンタイトルメントではサポートされなくなりました。代わりに、プロビジョニング プロファイルで指定されます。

私はあなたとまったく同じ問題を抱えていました。デバイスでビルドして実行しようとすると、次のアラートが表示されました。

実行可能ファイルは、無効な資格で署名されました。

アプリケーションのコード署名資格ファイルで指定された資格が、プロビジョニング プロファイルで指定された資格と一致しません。

(0xE8008016)。

コンソールでは、次のエラーとして現れました。

5 月 6 日 16:18:13 XXXXX installd[54]: 資格 'DataProtectionClass' には、プロビジョニング プロファイルで許可されていない値があります

最終的に、適切な設定を見つけました。開発者ポータルにログインし、使用しているプロビジョニング プロファイルに関連付けられたアプリ ID でデータ保護を有効にする必要があります。以下の画像を参照してください。

ここに画像の説明を入力

于 2013-05-06T21:59:20.427 に答える
0

エンタイトルメントを使用してデータ保護を試みましたが、問題なく動作します。秘訣は、Xcode プロジェクトの資格ファイルのエントリがプロビジョニング プロファイルのエントリと同じであることを確認することです。

具体的には、権利ファイルとプロビジョニング プロファイルの次の 2 つの設定は同じである必要があります。"application-identifier" - 識別子にワイルドカードを使用していませんが、うまくいくはずです。

于 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 のターゲットの [機能] ペインで有効にします。

詳細:アプリ配布ガイド: 機能の追加

于 2015-04-14T09:04:17.880 に答える