Androidアプリケーション内で使用するユーザー名とパスワードを保存したい場合、それを行うための最良の方法は何ですか?それは設定画面を介してですか(ただし、ユーザーがこれを見逃した場合はどうなりますか?)、またはダイアログボックスをポップアップしてユーザーに資格情報を要求しますか?もしそうなら、私はアプリケーションの状態を維持する必要があります。どうすればいいですか?
9 に答える
私が見たほとんどのAndroidおよびiPhoneアプリは、初期画面またはダイアログボックスを使用して資格情報を要求します。ユーザーが自分の名前/パスワードを頻繁に再入力しなければならないのは面倒だと思うので、その情報を保存することは使いやすさの観点から理にかなっています。
( Android開発ガイド)からのアドバイスは次のとおりです。
一般に、フィッシング攻撃をより目立たせ、成功する可能性を低くするために、ユーザーの資格情報を要求する頻度を最小限に抑えることをお勧めします。代わりに、認証トークンを使用して更新してください。
可能な場合は、ユーザー名とパスワードをデバイスに保存しないでください。代わりに、ユーザーが指定したユーザー名とパスワードを使用して初期認証を実行してから、有効期間が短いサービス固有の認証トークンを使用します。
AccountMangerを使用することは、資格情報を保存するための最良のオプションです。SampleSyncAdapterは、その使用方法の例を提供します。
何らかの理由でこれが選択できない場合は、設定メカニズムを使用して資格情報の永続化にフォールバックできます。他のアプリケーションはあなたの設定にアクセスできないので、ユーザーの情報は簡単に公開されません。
AndroidAccountManagerを使用する必要があります。これは、このシナリオ専用に作成されています。少し面倒ですが、SIMカードが変更された場合にローカルのクレデンシャルが無効になるため、誰かがスマートフォンをスワイプして新しいSIMを挿入しても、クレデンシャルが危険にさらされることはありません。
これにより、ユーザーは、デバイス上にあるアカウントの保存されたクレデンシャルに、すべて1か所からすばやく簡単にアクセス(および場合によっては削除)することができます。
SampleSyncAdapter(前述の@Miguelなど)は、保存されているアカウントのクレデンシャルを利用する例です。
クレデンシャルを保護する最善の方法は、root化されていないデバイスでは簡単に利用できないaccount.dbファイルに暗号化されたパスワードを保存することを最初に考えることだと思います。root化されたデバイスの場合、ハッカーは復号化するためのキーが必要です。それ。
他のオプションは、Gmailと同じようにすべての認証を行うことです。Gmailサーバーでの最初の認証後。パスワードの場合に使用される認証トークンを取得しました。そのトークンはプレーンテキストで保存されます。サーバーからパスワードを変更した場合、このトークンはfalseになる可能性があります。
最後のオプションは、2要素認証を有効にして、デバイスのデバイス固有のパスワードを作成することをお勧めします。デバイスを紛失した後、必要なのはそのデバイスを無効にすることだけです。
SharedPreferencesにクリアテキストとしてパスワードを保存することに懸念がある場合は、Androidアプリケーションにユーザー設定を保存するための最も適切な方法をご覧ください。
SDKからSampleSyncAdapterサンプルを確認することもできます。それはあなたを助けるかもしれません。
android-developersからのこの投稿をご覧ください。これは、Androidアプリに保存されているデータのセキュリティを強化するのに役立つ可能性があります。
新しい(Android 6.0)指紋ハードウェアとAPIを使用すると、このgithubサンプルアプリケーションのようにそれを行うことができます。
これらは、隠された情報を壊すのが難しい順にランク付けされます。
クリアテキストで保存
対称鍵を使用して暗号化して保存
Androidキーストアの使用
非対称鍵を使用して暗号化して保存
出典:Androidアプリにパスワードを保存するのに最適な場所はどこですか
キーストア自体は、ユーザー自身のロック画面のPIN /パスワードを使用して暗号化されるため、デバイスの画面がロックされている場合、キーストアは使用できません。アプリケーションシークレットにアクセスする必要がある可能性のあるバックグラウンドサービスがある場合は、このことに注意してください。
http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.htmlの情報はかなり実用的ですが、「uses-hidden-android-apis」ベースのアプローチです。クレデンシャル/パスワードをデバイスにローカルに保存することを本当に回避できない場合は、これを考慮する必要があります。
また、 https: //gist.github.com/kbsriram/5503519で、そのアイデアのクリーンアップされた要点を作成しました。これは役立つかもしれません。