1

現在、当社向けに追跡アプリを開発中です。このアプリをより安全にするために、最初の起動時にユーザーにセキュリティコードを要求したいと思います。このセキュリティコードは、ほとんどの場合、顧客番号になります。

ユーザーがトレースコードとトレースコードを使用してサーバーにリクエストを送信すると、サーバーはセキュリティコードとトラックコードとトレースコードがリンクされているかどうかを確認します。

私の質問は、アプリにセキュリティコードを保存して、アプリがトラックとトレースをサーバーに送信するように要求できるようにするための最良の方法は何でしょうか。ユーザーは最初の起動時にのみセキュリティコードを入力する必要があります。

[[NSUserDefaults standardUserDefaults] boolForKey:@"security code"];

これはオプションでしょうか?

4

2 に答える 2

7

デバイスに保存したい安全なデータについては、キーチェーンを使用することを強くお勧めします。次に、キーチェーン内にコードが存在するかどうかを確認し、利用可能な場合はそれを使用できます。

以下のドキュメントを参照して、キーチェーンを使用してください。

キーチェーンの概念 https://developer.apple.com/library/ios/#documentation/security/Conceptual/keychainServConcepts/02concepts/concepts.html#//apple_ref/doc/uid/TP30000897-CH204-TP9

iOSに実装する方法 https://developer.apple.com/library/ios/#documentation/security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html

リファレンス https://developer.apple.com/library/ios/#documentation/security/Reference/keychainservices/Reference/reference.html#//apple_ref/doc/uid/TP30000898

サンプルプロジェクト https://developer.apple.com/library/ios/#samplecode/GenericKeychain/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007797

于 2013-01-25T10:10:46.123 に答える
2

user1805901> This security code will most likely be the customer number.

それはどのくらい推測できますか?紛失した場合に備えて、UUIDを調べることをお勧めします。サーバーでUUIDから顧客番号へのマッピングを提供します。

WDUK> For any secure data you wish to store on the device, I strongly advise you use the Keychain.

キーチェーンに加えて、、、、、、、、およびも確認する必要がkSecAttrAccessibleWhenUnlockedあります。kSecAttrAccessibleAfterFirstUnlockkSecAttrAccessibleAlwayskSecAttrAccessibleWhenUnlockedThisDeviceOnlykSecAttrAccessibleAfterFirstUnlockThisDeviceOnlykSecAttrAccessibleAlwaysThisDeviceOnly

kSecAttrAccessibleAlwayskSecAttrAccessibleAlwaysThisDeviceOnlyは毒であり、キーチェーンがデータをリークする可能性があるため、使用しないでください。詳細については、 iOSキーチェーンの弱点を参照してください(改善されましたが、それでも問題になる可能性があります)。

*ThisDeviceOnlyシークレットが別のデバイスへの復元に含まれていないことを意味します。一部のコピー/貼り付け攻撃に役立ちます。

また、クラウドでシークレットが必要ない場合は、キーチェーン属性にを含める必要があると思いますcom.apple.MobileBackup。詳細については、テクニカルQ&AQA1719を参照してください。

ジェフ

于 2013-01-25T23:12:18.863 に答える