3

現在、初期ログイン ページを持つアプリケーションを設計しています。記憶機能を提供し、ユーザー名とパスワードの値を共有設定に保存しました。以下にサンプルコードを示します。

SharedPreferences preferences = getApplicationContext().getSharedPreferences("MyAppSettings",Context.MODE_PRIVATE);
SharedPreferences.Editor edit = preferences.edit();
edit.putString("username",username);
edit.putString("password",password); 
edit.commit();

情報:ユーザー名とパスワードがユーザーによって入力される文字列変数であるとします。

ユーザーがチェックボックスを設定するたびに、私はこれらの変数を共有設定に保存します。

この種の操作を実行するために、この方法が安全で信頼できるのだろうか?

これらの変数は、アプリケーションの外部からアクセスできるということですか?

また、ユーザーのパスワードを暗号化し、共有設定に保存する必要がありますか?

前もって感謝します、

4

3 に答える 3

4

Raghav Sood はあなたの質問に正しく答えましたが、私の意見では、アプリの設計に対するあなたのアプローチは根本的に間違っています。

現代の慣例では、アプリにユーザー名とパスワードをまったく保存しないように指示されています。代わりに、ログイン プロセスで oauth トークンを生成する必要があります。このトークンをアプリで暗号化して、将来の Web サーバーへのアクセスのために記憶することができます。

oauth トークンに関する一般的な情報を得るには、ウィキペディアの記事http://en.wikipedia.org/wiki/OAuthを確認できます。例として、Twitter はそれに接続されたアプリにそのアプローチを使用します https://dev.twitter .com/docs/auth/oauth/faq

于 2013-04-02T13:37:23.743 に答える
3

これらの変数は、アプリケーションの外部からアクセスできるということですか?

ルート化されたデバイスを持っている人なら誰でも、SharedPreferences を表示できます。これは、デバイスに保存されている単純な XML ファイルです。

また、ユーザーのパスワードを暗号化し、共有設定に保存する必要がありますか?

そうする方が安全でしょう、はい。また、ユーザー名を暗号化します。

于 2013-04-02T13:21:02.570 に答える
0
  1. ユーザーにユーザー名とパスワードを送信させる
  2. バックエンドがユーザーを検証したら、サーバーにJWTを返させます
  3. Hawkを使用して、この JWT を共有設定に安全に保存します
  4. 今後、この JWT を使用してユーザーを認証します
于 2017-10-18T06:22:51.913 に答える