我已设置代码以将远程服务器从Android应用程序调用到远程服务器。这是代码:
private class DownloadWebPageTask extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... theParams)
{
Log.d( "Inner class: " , "Doing stuff in background" );
String myUrl = theParams[0];
String myEmail = theParams[1];
String myPassword = theParams[2];
Log.d( "Inner myURL: " , myUrl );
Log.d( "myEmail: " , myEmail );
Log.d( "myPass: " , myPassword );
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("username", myEmail ));
postParameters.add(new BasicNameValuePair("password", myPassword ));
String response = "";
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(myUrl);
try
{
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null)
{
response += s;
}
Log.d( "After call, response: " , " " + response);
}
catch (Exception e)
{
Log.d( "Exception: " , "Yup");
e.printStackTrace();
}
return response;
}
@Override
protected void onPostExecute(String result)
{
Log.d( "Post execute: " , "In the post-execute method" );
//textView.setText(result);
if ( result != null && result == "Ok")
{
Log.d( "Post execute: " , "OKKKK :)" );
}
else
{
Log.d( "Post execute: " , "NOOOT OKKKK :)" );
}
}
}
这是一个要进行身份验证和登录的请求。现在您可以看到,我正在从用户那里收集登录名和密码,但不知道如何最好地将其附加到请求URL。
我可以做一些像urlString +“?login = login&amp; pass = pass但是我想知道在Android环境中是否有”良好实践“的方法吗?而且,我的网址不是htpps - 是有办法让它安全吗?
谢谢!
答案 0 :(得分:2)
不安全。您的URL最有可能通过几个未加密的跃点传递到互联网。嗅探这些请求非常简单。最简单的方法是使用HttpPost在消息体中发送此数据并使用HTTPS。如果您必须使用HTTP,请尝试在此处说明的digest authentication:how to use Digest authentication in android?
答案 1 :(得分:1)
不得不回答只是评论Heesham Saeed的“回答”(这实际上是一个指令,可以解决你的应用程序可能拥有的任何安全感):
手机(包括Android)对于心胸狭隘的人来说可能是一个烟幕,但它不是一个技术能力无法看到的黑盒子。如果用户检查代理日志,则用户可以看到手机发送的URL。检查HTTP流量路由的任何代理的日志的陌生人可以看到URL。这是Hesham的严重误解+对新发展者的误解,这些误解导致了易受攻击的应用程序的制造。
下一步...
MD5不加密! MD5无法解密!神圣的狗屎,在你说话之前得到线索,就像你有一个线索! MD5是一种单向散列算法。任何MD5哈希都可以使用Rainbow Tables IFF来反转你有足够的时间和CPU能力(并且说某人/某些东西没有这两者)。实际上,对于所有哈希算法和加密算法也是如此 - 但MD5是最不重要且耗时最少的CPU之一。 MD5不是用于保护通过未加密通道传输的数据的合适方法,或者它非常适合在接收端提取数据。