4

最近、永続的なログインに共有設定を使用している多くのAndroidアプリを見つけました。このようなアプリでは、初めてログインするときにユーザーのユーザー名とパスワードが必要ですが、それ以降はユーザーによる追加の操作は必要ありません。

まれに、そのアプリがshared_prefsフォルダーのlogin_account.xmlなどのファイルにパスワードを保存します。ユーザーがAndroidスマートフォンをルート化すると、他の悪意のあるアプリがこのファイルを読み取ってユーザーのパスワードを取得する場合があります。

ほとんどの場合、アプリはshared_prefsフォルダーのlogin_account.xmlにログインキー(パスワードではない)を保存することがわかりました。悪意のあるアプリはパスワードを盗むことができないため、安全なようです。ただし、被害者は自分のログインキーを被害者のログインキーに置き換えることができるため、被害者のログインステータスを取得できます。

ログインキーが盗まれるのを防ぐ方法と、ユーザーがアプリをロードするたびにパスワードを入力する必要がない方法の両方があるのではないかと思います。

4

3 に答える 3

5

デバイスは本質的に安全ではないため、何をしても、「EvilGuy」が何かをする可能性は常にあります。それに対する解決策は絶対にありません。ただし、Chirag Ravalが提案することを実行することで、リスクをいくらか軽減できます。ログインとそれが成功したという事実のみを保存します。これに「自動」だけに追加します-限られた時間ログインしてから、ログインダイアログを再度表示してパスワードを再確認します。

電話の署名を生成し、最初のログイン時に送信し、その後のログインに使用できる応答文字列をサーバーに送信させることで、もう少し安全にすることができます。推測するのが非常に難しく、別の電話では機能せず、パスワードが必要であるという事実によって、ある程度安全になります。このような署名を生成するには、Buildクラスから多くのフィールド値、電話のID、場合によってはTelephonyManager(ホームネットワーク)で取得した値を連結し、そこからダイジェストを生成します。これを行う最も安全な方法は、SHA-1 HMACを使用することです(弾む城のライブラリを参照してください)。

もちろん、これはすべて熱心な敵に対して崩壊します。彼はデバッガーをアプリに接続し、そのすべての呼び出しを追跡し、署名のアルゴリズムを理解することができます。これは、冒頭で書いたように、デバイスが安全でないためです。(追記:これは、クライアントがアプリのセキュリティをテストしているときに実際に発生しました)。

于 2012-07-17T09:12:19.450 に答える
2

したがって、プライベートモードで適切に構成されている場合、SharedPreferences

例:

    SharedPreferences userDetails = getSharedPreferences("userdetails", MODE_PRIVATE);

アプリだけがその情報にアクセスできるようになっているため、データを保護するには十分なはずです。

Androidには、私が知っているより高度なセキュリティ対策(Android 4.0には新しいものがあることをどこかで読んだと思いますが、ほとんどの人がアプリを使用できるようにしたい場合は、現時点では使用できません)と暗号化はありません。キーが必要であり、そのキーがモバイルデバイスに保存されている場合は、盗まれる可能性があるため、これは役に立ちません。

あなたができることは次のとおりです。Android携帯をroot化しないように人々に伝え、携帯が盗まれた場合は、別の場所からパスワードを変更するだけです。携帯電話をルート化すると、セキュリティの脅威が高まり、Androidが設定する「セキュリティ」が無効になります。したがって、ルート化を行うと、データの盗難にさらされることになります。したがって、携帯電話をルート化することは、リスクを冒して自分が何をしているのかを本当に理解している場合にのみ行う必要があります。やっている。

于 2012-07-17T09:13:00.333 に答える
0

簡単な方法が1つあります。初めてユーザーにユーザー名とパスワードを尋ねるだけです。ログインが正しければ、共有設定にtrueフラグのみを保存してください。したがって、次回フラグを確認するだけで、ユーザーがすでにログインしているかどうかにかかわらず、天気がわかります。

したがって、この方法では、だれもユーザーのパスワードを盗むことはできません。

于 2012-07-17T09:02:11.413 に答える