0

私はphpで書かれたAndroidとWebサービスを持っています。Android には、アプリケーションが「ユーザー名」と「パスワード」を Web サービスに送信する認証システムがあり、ユーザー ID が返されます。次に、ユーザー ID を使用して、Web サービス経由で他の情報を要求します。

良い実践の観点から、上記の方法は安全ではなく、セッションを使用することを考えました。しかし、私はそれらを使用する方法がわかりませんか?Android から Web サービスへのリクエストをより安全にする例を教えてください。

ありがとうございました、

4

2 に答える 2

2

主なオプションは 2 つあります。

1-SSLこの場合、ユーザー名/パスワードは暗号化されるため、プレーンテキストとして送信できます。

2-サーバーでユーザー名/パスワードを暗号化public keyして、Webサービス以外の誰も(private keyメッセージを復号化できない)

通信全体を安全にしたい場合 (ユーザー名/パスワードの送信だけでなく)、symmetric cipherアルゴリズム ( などAES)を使用できます。asymmetric cipherアルゴリズム ( などRSA) ははるかに遅く、より多くのリソースを消費するからです。

また、 Androidから使用するためpublic keyにフォーマットに変換する必要があるわけではありません。DERopenssl

于 2013-02-19T15:34:19.730 に答える
0

あなたはこれを試すことができます

送信にHttpClientを使用している場合は、アプリケーションオブジェクトに保存して、今後のリクエストに使用できます。

import android.app.Application;
import org.apache.http.impl.client.DefaultHttpClient;

public class AppObj extends Application
{
  public static DefaultHttpClient davisimperialclient;

}

ログイン画面で、HttpClientを作成する必要があります

AppObj.davisimperialclient = new DefaultHttpClient();
      HttpPost localHttpPost = new HttpPost(ApplicationLinks.login);
      try
      {
        ArrayList localArrayList = new ArrayList(2);
        localArrayList.add(new BasicNameValuePair("username", this.name));
        localArrayList.add(new BasicNameValuePair("password", this.pass));
        localHttpPost.setEntity(new UrlEncodedFormEntity(localArrayList));
        String  str = EntityUtils.toString(DavisImperialApp.davisimperialclient.execute(localHttpPost).getEntity());
        Log.e("error", str);
        return str;
      }
      catch (Exception localException)
      {


      }

ログインが成功した場合は、次を使用できます

AppObj.davisimperialclient

他のリクエストをするため

オブジェクトは、アプリケーションを終了するまで存在します

于 2013-02-19T15:47:50.713 に答える