私のiPhoneアプリでは、ユーザー名、パスワード、WebサービスへのいくつかのURLなどの機密データがあります。 NSUserdefaultsまたはkeychainのどちらが優れていますか。 誰かがNSUserdefaultsが安全でないと言います。それはなぜ安全でないのですか? のいずれか1つの賛否両論を与えることができます。NSUserDefaultsまたはkeychainは、iPhoneアプリのユーザー名とパスワードを保存する方が良い
答えて
NSUserDefaultsは非常に使いやすく、キーごとに1つの値しか格納しません。しかし明らかに、それは暗号化がないので、非常に安全な方法ではありません。
しかし、キーチェーンは安全ですが、コードするのは少し難しいです。 これらのリンクを参照して、キーチェーンアクセスを使用することができます。
http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code
あなたも、私はそれがあなたの役に立てば幸いサイモン
https://github.com/goosoftware/GSKeychain
によって考案し、このライブラリを使用することができます!
NSUserDefaultsに格納されているものは、デバイス上であろうとiCloudへの(暗号化されていない)バックアップであろうと、同期されたMacであろうと、比較的簡単にオープンして読み込むことができます。
Keychain, on the other hand, is meant for stuff like certificates and passwords。私は「パスワードをiOSに保存しないでください」という記事をリンクしました。これはもう少し役に立つ情報を提供します。
キーチェーンはより安全ですが、とにかくこの種の情報をNSUserDefaultsに保存すると、ユーザーは気分が変わりません。誰かがデバイスをハッキングすると、UserDefaultsからの情報を取得するのと同じように、Keychainから情報を得ることができます。だからセキュリティのこの問題はレトリックです。しかし、とにかく、良いプログラミングスタイルはキーチェーンにこのデータを保存することです!
キーチェーンを使用することをお勧めします。 キーチェーンを使用すると、暗号化された形式でパスワードを保存できます。 AppleのGenericKeychainサンプルを見てください。
NSUserDefaultsはキーチェーンと比較して少し安全性が低くなります。 特定のキーがわかっていると、NSUserDefaultsのデータに簡単にアクセスできます。これはKeychainのケースではありません。
NSUserDefaultsをKeychainsに変換することもできます。見てくださいhere。
アプリが削除されてもキーチェーンのデータは保持されますが、NSUserDefaultsのデータはアプリと共に削除されます(NSUserDefaultsはアプリサンドボックスの一部であり、Keychainはアプリ独立サービスです)。
*特定のキーがわかっていると、NSUserDefaultsのデータに簡単にアクセスできます。これはKeychain *のケースではありません。これはどういう意味ですか? – Honey