2012-09-21 11 views
14

私のiPhoneアプリでは、ユーザー名、パスワード、WebサービスへのいくつかのURLなどの機密データがあります。 NSUserdefaultsまたはkeychainのどちらが優れていますか。 誰かがNSUserdefaultsが安全でないと言います。それはなぜ安全でないのですか? のいずれか1つの賛否両論を与えることができます。NSUserDefaultsまたはkeychainは、iPhoneアプリのユーザー名とパスワードを保存する方が良い

答えて

15

NSUserDefaultsは非常に使いやすく、キーごとに1つの値しか格納しません。しかし明らかに、それは暗号化がないので、非常に安全な方法ではありません。

しかし、キーチェーンは安全ですが、コードするのは少し難しいです。 これらのリンクを参照して、キーチェーンアクセスを使用することができます。

http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code

あなたも、私はそれがあなたの役に立てば幸いサイモン

https://github.com/goosoftware/GSKeychain

によって考案し、このライブラリを使用することができます!

6

NSUserDefaultsに格納されているものは、デバイス上であろうとiCloudへの(暗号化されていない)バックアップであろうと、同期されたMacであろうと、比較的簡単にオープンして読み込むことができます。

Keychain, on the other hand, is meant for stuff like certificates and passwords。私は「パスワードをiOSに保存しないでください」という記事をリンクしました。これはもう少し役に立つ情報を提供します。

0

キーチェーンはより安全ですが、とにかくこの種の情報をNSUserDefaultsに保存すると、ユーザーは気分が変わりません。誰かがデバイスをハッキングすると、UserDefaultsからの情報を取得するのと同じように、Keychainから情報を得ることができます。だからセキュリティのこの問題はレトリックです。しかし、とにかく、良いプログラミングスタイルはキーチェーンにこのデータを保存することです!

0

キーチェーンを使用することをお勧めします。 キーチェーンを使用すると、暗号化された形式でパスワードを保存できます。 AppleのGenericKeychainサンプルを見てください。

NSUserDefaultsはキーチェーンと比較して少し安全性が低くなります。 特定のキーがわかっていると、NSUserDefaultsのデータに簡単にアクセスできます。これはKeychainのケースではありません。

NSUserDefaultsをKeychainsに変換することもできます。見てくださいhere

+0

*特定のキーがわかっていると、NSUserDefaultsのデータに簡単にアクセスできます。これはKeychain *のケースではありません。これはどういう意味ですか? – Honey

10

アプリが削除されてもキーチェーンのデータは保持されますが、NSUserDefaultsのデータはアプリと共に削除されます(NSUserDefaultsはアプリサンドボックスの一部であり、Keychainはアプリ独立サービスです)。