これまでAndroid向けの小さなアプリやゲームを作成していましたが、ユーザー数の多いやや高性能なアプリケーションを作成しています。Androidでのユーザー認証 - セキュリティ実装
私の通常のやり方は、パスワードを持つすべてのユーザー用のテーブルを用意し、HTTP(S)コールを使用して簡単なログイン画面で認証することでした。
私も、このアプリのために改善したいいくつかあります:私はそれを何をする必要がありますユーザーのパスワードを、暗号化する場合
安全に送信
は?デバイス上で、送信される前に? (安全でないネットワークの場合は、WiFiホットスポットのように)またはそれをDBに書き込む前に、サーバー上でより良い?それとも、私はSQLの暗号化を使うべきですか?
自動ログイン
私は、ユーザーがログアウトするまでログインとどまることができるようにしたい - どのように私は最善のことをしますか?セキュリティだけでなく、ユーザーエクスペリエンスのためにも。
私の研究では、AccountManagerを使用すると、ユーザー名とパスワードを保存し、アプリの起動時に自動的に認証されることがわかります。それ以上のことはありますか、私がここで紛失しているセキュリティ上のリスクはありますか?
アクセス制御
ユーザーがログインせずにログイン画面以外のものにアクセスすることはできませんので、通常、私は、アプリによって行われたすべての呼び出しが有効であると期待される。しかし、どのように、私は最高の認証んそれが攻撃者ではないことを確認するユーザーの要求ですか?すべてのリクエストでusername/idを送るだけではないので、ログインごとに生成するセッショントークンのようなものが必要なのでしょうか?それとも良い方法がありますか?
私が考えることを忘れたことがありますか?
アドバイスをいただき、ありがとうございます。他の人がリクエストを行うのを止めるために何ができるのかよくわかりませんが、ログインできない場合はトークンを取得できず、何もできません。右? –
はい、正確です。他の解決策は、署名されたAPKを生成し、キーストアからキーを使用してAPIへのリクエストに署名することです。許可されていないすべてのリクエストを削除することができます。 –
良いアイデア、ありがとう! –