1

私のココア アプリには次の機能があります。 1. パスワードで保護されたログイン。ユーザーはアプリを使用するためにパスワードを入力する必要があります。

いくつかの調査の後、安全な情報 (私の場合は、ログイン パスワードと各個人プロファイル内の安全な情報) を保存するために KeyChain を使用する必要があると言われました。

私の目標を達成するために使用できる優れた KeyChain ラッパー、SSKeyChain があるようです (私は c lang にあまり慣れていないため、リンゴのキーチェーンを使用するのは難しいでしょう)。また、SSKeyChain を使用するサンプルもいくつか見つけました。iOS: アプリ内にユーザー名/パスワードを保存する方法は? :

To save a password:

[SSKeychain setPassword:@"AnyPassword" forService:@"AnyService" account:@"AnyUser"]
To retrieve a password:

NSString *password = [SSKeychain passwordForService:@"AnyService" account:@"AnyUser"];

ただし、キーチェーンを「保護」する必要があるかどうかはわかりません: 1. setPassword:forService:account を呼び出すとき: 平文のパスワードを含める必要がありますか? または、最初にパスワードを暗号化する必要がありますか? また、サービス名を設定するときは、アプリ名を単純に含める必要があります 2. passwordForService: を使用してパスワードを簡単に取得できる場合、安全ではないようです。他のアプリも同じメソッドを呼び出してキーチェーンを取得できますか? (サービス名とアカウントを知っている場合)

Apple のドキュメントを読みました: https://developer.apple.com/library/mac/#documentation/security/conceptual/keychainServConcepts/02concepts/concepts.html#//apple_ref/doc/uid/TP30000897-CH204-TP9

このキーチェーンを「ロック」および「ロック解除」する必要があるようです。SSKeyChain ドキュメントhttp://docs.samsoff.es/SSKeychain/Classes/SSKeychain.htmlを確認しましたが、そのようなキーチェーンを「ロック」および「ロック解除」する方法が見つかりませんでした。じゃあどうやって守ればいいの?

4

1 に答える 1

1

システムのキーチェーン サービスは、デフォルトで各アプリケーションが独自のキーチェーン アイテムにのみアクセスできるように制限します。ロックとロック解除はすべて、キーチェーン サービスの舞台裏で処理されます。

Xcode を使用してアプリケーションを作成すると、Xcode はアプリケーション識別子の資格をアプリケーション バンドルに追加します。Keychain Services は、この資格を使用して、アプリケーションに独自のキーチェーン項目へのアクセスを許可します。

http://developer.apple.com/library/mac/#documentation/Security/Reference/keychainservices/Reference/reference.html

于 2013-05-07T18:06:34.340 に答える