私のiPhoneアプリには、ユーザー名、パスワード、WebサービスへのURLなどの機密データがあります。NSUserdefaults とキーチェーンのどちらが優れているか。NSUserdefaults は安全ではないと誰かが言っています。なぜ安全でないのですか?そして、誰もがそれぞれの長所と短所を与えることができます.
5 に答える
NSUserDefaultsは非常に使いやすく、キーごとに1つの値のみを格納します。しかし、明らかに、暗号化がないため、これはあまり安全な方法ではありません。
ただし、コーディングは少し難しいですが、キーチェーンは安全です。これらのリンクを参照して、キーチェーンアクセスを使用できます。
http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code
Simonによってデバイス化されたこのライブラリを使用することもできます
https://github.com/goosoftware/GSKeychain
お役に立てば幸いです!!
アプリが削除されてもキーチェーン データは保持されますが、NSUserDefaults データはアプリと共に消えることに注意してください (NSUserDefaults はアプリ サンドボックスの一部であり、キーチェーンはアプリに依存しないサービスです)。
NSUserDefaultsに保存されているものはすべて、デバイス上でも、iCloudまたは同期されたMacへの(暗号化されていない)バックアップでも、(比較的)簡単に開いて読み取ることができます。
一方、キーチェーンは、証明書やパスワードなどを対象としています。「iOSにパスワードを保存しない方法」というタイトルの記事をリンクしました。これには、もう少し役立つ詳細も記載されています。
キーホルダーの使用をお勧めします。キーチェーンを使用すると、パスワードを暗号化された形式で保存できます。AppleのGenericKeychainサンプルを見てください。
NSUserDefaultsは、キーチェーンと比較すると少し安全性が低くなります。NSUserDefaultsでは、特定のキーがわかっている場合、データに簡単にアクセスできます。これはキーチェーンには当てはまりません。
NSUserDefaultsをキーチェーンに変換することもできます。 こちらをご覧ください。
キーチェーンはより安全であるため、はるかに優れたソリューションですが、とにかく、この種の情報をNSUserDefaultsに保存する場合、ユーザーは何の違いも感じません。誰かがデバイスをハッキングした場合、UserDefaultsから情報を取得するのと同じように、キーチェーンから情報を取得できます。したがって、このセキュリティの問題はレトリックです。しかしとにかく、良いプログラミングスタイルはこのデータをキーチェーンに保存することです!