3

私はこれについて頭をまっすぐにすることができません。私は現在、Android上でかなり大規模なアプリケーションを構築しています。私はセキュリティと認証に関していくつかの問題に遭遇しました...

シナリオ:

PHPとMySQLを実行しているサーバーにHTTP(後でSSLを実装する)を介して呼び出しを行うアプリケーションがあります。もちろん、既存のユーザーデータベースを使用したいので、別のDBへの移行は解決策ではありません。「Android経由でサーバーにユーザーを登録する」機能を作成することができました。私も正常にログインしましたが、ここから問題が始まります。

私が取り組んでいるAndroidアプリケーションのユーザーは、アプリケーションを介してサーバー上のものを追加、編集、削除、同期するため、状況はかなり複雑になります。私には少し複雑すぎるようです:)

問題:

  1. サーバー側のログインから結果を取得し、JSONを介してサーバーからAndroidに渡すと、接続が切断され、サーバー側でログオンしていません(セッションが停止します)が、電話では接続が切断されます。サーバーとAndroidの両方で、再度ログオンせずにログオンを永続化するにはどうすればよいですか?そのため、Androidからサーバーへの後続の呼び出しは、認証されたままの同じユーザーで行われます。つまり、Spotifyアプリ(および他の多くのアプリ)のように、(ログアウトするまで)1回限りのログインが必要です。

  2. 私が物事を正しく理解していれば、SSLを正しく実装することで、最初にパスワードをハッシュする必要なしに、パスワードをクリアテキストでサーバーに送信することが可能になります。これは正しいです?

MIM攻撃によって、Androidからサーバーに送信する一意のIDが危険にさらされるという事実について考えるのをやめることはできません。私が最初に考えたのは、ログオンが成功した後、AndroidデバイスのUIDをサーバーの「キー」として使用することでした。ただし、そのキーが悪用されると、そのUIDに関連付けられているユーザーが危険にさらされます。私はAndroidでAccountManagerを見てきましたが、私の場合はかなりやり過ぎのようです。

誰かが例や少なくともガイドラインを提供できれば、私はとても感謝しています!

よろしくお願いします!

編集後に追加されたソリューション図

認証のメカニズムを説明する画像

この図は、アプリケーションの最初の起動を示していることに注意してください。それ以降のスタートアップはログイン/登録フォームを表示しませんが、代わりにDUTを使用します。

//アレクサンダー

4

1 に答える 1

3

何らかの形式の短期間の認証トークンをAndroidアプリに発行します。彼らはすべてのリクエストでそれを渡す必要があり、あなたはそれをあなたのウェブアプリでチェックします。接続を切断してもセッションは終了しません。終了する場合は、Webアプリにバグがあります。修正してください。Androidでは、同じHttpClientインスタンスを使用している限り、同じセッションを引き続き使用します。特別なことは何も必要ありません。

何をするにしても、SSLの実装を延期するのではなく、今すぐ実行してください。

于 2012-12-14T03:30:38.910 に答える