Отправка параметров из Android AsyncTask на удаленный сервер - PullRequest
1 голос
/ 25 февраля 2012

Я настроил код для вызова удаленного сервера из приложения 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 & pass = pass, но мне было интересно, есть ли способ" хорошей практики "сделать этов среде Android? Кроме того, мой URL-адрес не htpps - есть ли способ сделать его безопасным?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012

Это не безопасный.Ваш URL передается через Интернет, скорее всего, через несколько незашифрованных прыжков.Понять эти запросы довольно просто.Самый простой способ - отправить эти данные в теле сообщения с помощью HttpPost и использовать HTTPS.Если вы должны использовать HTTP, попробуйте дайджест-аутентификацию , объясненную здесь: как использовать дайджест-аутентификацию в Android?

1 голос
/ 25 февраля 2012

Пришлось ответить только для того, чтобы прокомментировать «ответ» Хишама Саида (который на самом деле является директивой, чтобы разрушить любое чувство безопасности, которое может иметь ваше приложение):

Мобильный телефон (включая android) может быть дымовой завесой для простых людей, но это НЕ черный ящик, в который не могут заглянуть люди с техническими способностями. URL-адрес, отправленный по телефону, может быть просмотрен Пользователем, если он просматривает, например, логи прокси. URL могут видеть незнакомые люди, которые проверяют журналы ЛЮБОГО прокси, через который маршрутизируется HTTP-трафик. Это грубое недоразумение, подобное Хешаму + выдвижение этого недоразумения новичкам в разработке, которые приводят к созданию уязвимых приложений.

Далее ...

MD5 - это НЕ шифрование! MD5 не может быть расшифрован! Святое дерьмо, получите ключ, прежде чем говорить, как будто у вас есть ключ! MD5 - это односторонний алгоритм хеширования. Любой хэш MD5 можно перевернуть с помощью Rainbow Tables, если у вас достаточно времени и мощности процессора (и, чей кто-то / что-то не имеет и того, и другого). То же самое касается всех алгоритмов хеширования и алгоритмов шифрования, но MD5 является одним из наименее тривиальных и наименее затратных по времени и затратных ресурсов ЦП для реверсии. MD5 НЕ подходит для защиты данных, передаваемых по незашифрованным каналам. ИЛИ вообще не подходит для извлечения данных на принимающей стороне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...