适用于Android和Web服务的会话

时间:2013-02-19 15:31:03

标签: php android web-services session

我有一个用PHP编写的android和web服务。 android有一个身份验证系统,应用程序将“用户名”和“密码”发送到Web服务,它将返回用户ID。然后,我使用user-id通过Web服务请求其他信息。

在良好实践方面,上述方法并不安全,我想到了使用会话。但我不知道如何使用它们?你能不能给我一些从android到web服务请求更安全的例子?

谢谢,

2 个答案:

答案 0 :(得分:2)

您有两个主要选择:

1-通过SSL与您的网络服务进行通信,在这种情况下,您可以将用户名/密码作为纯文本发送,因为它们将被加密

2-使用服务器public key加密用户名/密码,因此除了Web服务(具有private key的人)可以解密该消息之外没有其他人

如果您希望整个通信安全(不仅仅是发送用户名/密码),您可以使用symmetric cipher算法(例如AES),因为asymmetric cipher算法(例如{{1} }}慢得多,消耗更多资源。

此外,您不需要将RSA格式转换为public key格式,以便在Android中使用它,您可以使用DER

答案 1 :(得分: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

提出其他请求

对象将一直存在,直到我们退出应用程序