Правильно ли кодировать данные аутентификации в пути к ресурсам?

1

Для этого у меня есть сервер RESTFull и клиент Android. На сервере есть несколько методов, которые возвращают данные в HTTP-вызовы клиента. Одним из методов клиентского кода является тот, который показан ниже, который я использовал для аутентификации клиента.

        HttpClient httpclient = new DefaultHttpClient();
        HttpGet request = new HttpGet(
                "http://localhost:8080/myapp/customer/login/cUser/cpwd");

        request.addHeader("Accept", "text/plain");
        HttpResponse response = httpclient.execute(request);
        HttpEntity entity = response.getEntity();
        InputStream instream = entity.getContent();
        String msg = read(instream);


 if(msg.equals("success"){ // if customer logged in successfully
     //do something
 }

Код на стороне сервера использует часть вышеуказанного uri как имя пользователя и пароль и выполняет аутентификацию. На мой взгляд, кому-то легко получить доступ к этим данным и использовать его, как ему нравится. Есть ли лучший способ сделать это?

заранее спасибо

Теги:
rest

2 ответа

0
Лучший ответ

В службе RESTfull вы должны использовать заголовки заголовков HTTP/1.1, например:

request.addHeader("Authorization", "auth string");

Строка Auth может быть базовой строкой аутентификации: base64_encode(login+":"+password) или токен аутентификации OAuth2 и т.д.

PS Ou bien использует SSL-соединения, как сказал Брайан Келли.

1

Да, для злоумышленника невероятно легко вывести имя пользователя/пароль из URL-адреса, используемого в простом HTTP-запросе. Ваша схема полностью уязвима для эксплуатации и атаки.

Вместо этого используйте HTTPS. Это заставит транспортное соединение быть зашифрованным в SSL и предотвратить отслеживание. Вы также должны удалить учетные данные из URL-адреса и вместо этого использовать что-то вроде Basic Authentication.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню