我有一个用PHP编写的android和web服务。 android有一个身份验证系统,应用程序将“用户名”和“密码”发送到Web服务,它将返回用户ID。然后,我使用user-id通过Web服务请求其他信息。
在良好实践方面,上述方法并不安全,我想到了使用会话。但我不知道如何使用它们?你能不能给我一些从android到web服务请求更安全的例子?
谢谢,
答案 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
提出其他请求
对象将一直存在,直到我们退出应用程序