我有一個用php編寫的android和web服務。 android有一個認證系統,應用程序從該系統發送「用戶名」和「密碼」到web服務,它將返回用戶ID。然後,我使用用戶標識通過網絡服務請求其他信息。適用於Android和webservices的會話
根據良好的做法,上述方法是不安全的,我想到使用會話。但我不知道如何使用它們?你們可以給我一些從android到web服務請求更安全的例子嗎?
謝謝
我有一個用php編寫的android和web服務。 android有一個認證系統,應用程序從該系統發送「用戶名」和「密碼」到web服務,它將返回用戶ID。然後,我使用用戶標識通過網絡服務請求其他信息。適用於Android和webservices的會話
根據良好的做法,上述方法是不安全的,我想到使用會話。但我不知道如何使用它們?你們可以給我一些從android到web服務請求更安全的例子嗎?
謝謝
你有兩個主要選擇:
1傳達到你的Web服務在SSL
在這種情況下,你可以發送用戶名/密碼以純文本格式,因爲它們將反正
2 - 加密與服務器public key
所以沒有人除了Web服務(誰擁有private key
可以解密該消息)
如果您的用戶名/密碼希望整個通信是安全的(不僅僅是發送用戶名/密碼),你可以使用一個symmetric cipher
算法(例如, AES
),因爲asymmetric cipher
算法(例如RSA
)速度慢得多並消耗更多資源。
而且,不是說你需要將public key
到DER
格式轉換爲使用它的機器人,它可以用openssl
做你可以,如果你正在使用的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
作出其他請求
對象將存在,直到我們退出應用程序