Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как понять что я получил от http сервера именно свой ответ ? / 25 сообщений из 53, страница 1 из 3
12.04.2016, 12:13
    #39213451
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Добрый день

Есть внешний сервер - (с++ на fast_cgi)

принимает POST запросы и возвращает ответы ...

на моей стороне есть HttpClient

Код: java
1.
import org.apache.commons.httpclient.HttpClient;



вопрос такой я создал запрос и отправил его постом на этот сервер .... получаю некий ответ ...

как мне быть уверенным что я получил именно свой ответ ?

а не к примеру ответ от такого же соседнего клиента ?
...
Рейтинг: 0 / 0
12.04.2016, 12:15
    #39213453
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1а не к примеру ответ от такого же соседнего клиента ?
по ООП получит твой экземпляр?
...
Рейтинг: 0 / 0
12.04.2016, 12:18
    #39213459
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
AFAIK
IP адрес + номер порта
...
Рейтинг: 0 / 0
12.04.2016, 12:20
    #39213463
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1как мне быть уверенным что я получил именно свой ответ?
а не к примеру ответ от такого же соседнего клиента ?
Эээ, ну постановка, конечно, убойная. Потому как не очень понятно, почему вдруг ответ тебе должен отличаться от ответа другому клиенту. Твой клиент имеет определенный порт. И сервер посылает ответ именно на этот порт. И если он послал ответ на этот порт, то он это и хотел сделать.

Еще, конечно, можно HTTPS включить. Тогда отклик другому клиенты ты, по идее, не можешь читать.
...
Рейтинг: 0 / 0
12.04.2016, 12:28
    #39213478
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
я что то подумал, что это объект класса всё внутри инкапсулировал и получит ответ)
...
Рейтинг: 0 / 0
12.04.2016, 13:50
    #39213599
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Petro123я что то подумал, что это объект класса всё внутри инкапсулировал и получит ответ)

ну http это вещь без состояния и безличная ...

Это раз...

сервер может ошибиться и сформировать другой ответ и подсунуть мне ...

нужна верификация ...

например я могу в параметры добавить sha всех полей и подпись - так же требовать от сервера и как то сверять ...

вопрос все такие есть :

я сформировал и отправил ПОСТ запрос - на какой то урл ... как мне быть уверенным что в ответ мне придет именно мой ответ?

как на уровне соединения это регулируется ?

на уровне сервера?
на уровне http клиента ?

механика какая ?
...
Рейтинг: 0 / 0
12.04.2016, 13:55
    #39213612
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1,

Вы смеетесь, издеваетесь или что-то другое?

Atum1сервер может ошибиться и сформировать другой ответ и подсунуть мне ...

нужна верификация ...

Нормальные люди особо защищенные от ошибок системы обычно делают так:

3-и одинаковых сервера. Отправляет запрос на все три. Сравниваем 3-и ответа, если они совпадают - сервера не ошиблись

Если один из ответов не совпал с другим - берем тот ответ, который пришел с 2-х серверов. Тот сервер, который имеет свое " особое мнение " - скорее всего ошибся.

Если и после этого продолжают "ошибаться и нужна верификация" - ставим 5, 7 и так далее серверов.
...
Рейтинг: 0 / 0
12.04.2016, 14:04
    #39213626
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1сервер может ошибиться
вы протокол разрабатывате?
Подробнее про задачу.
В каком месте кода непонятно?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://targethost/homepage");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
// The underlying HTTP connection is still held by the response object
// to allow the response content to be streamed directly from the network socket.
// In order to ensure correct deallocation of system resources
// the user MUST call CloseableHttpResponse#close() from a finally clause.
// Please note that if response content is not fully consumed the underlying
// connection cannot be safely re-used and will be shut down and discarded
// by the connection manager. 
try {
    System.out.println(response1.getStatusLine());
    HttpEntity entity1 = response1.getEntity();
    // do something useful with the response body
    // and ensure it is fully consumed
    EntityUtils.consume(entity1);
} finally {
    response1.close();
}

HttpPost httpPost = new HttpPost("http://targethost/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);

try {
    System.out.println(response2.getStatusLine());
    HttpEntity entity2 = response2.getEntity();
    // do something useful with the response body
    // and ensure it is fully consumed
    EntityUtils.consume(entity2);
} finally {
    response2.close();
}
...
Рейтинг: 0 / 0
12.04.2016, 14:08
    #39213634
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1на уровне сервера?
на уровне http клиента ?

Есть такая штука - OSI модель. Она имеет кучу слоев. Помимо этого в самом верхнем слое (application, кажется) может быть еще куча слоев за пределами OSI. И ваш вопрос можно аналогично задать любому из всех этих слоев, а не только HTTP.

Для HTTP дает гарантии протокол нижнего уровня - TCP. Он как раз и гарантирует что по HTTP вы получите только свой ответ. А если сервер вернул вам чужой ответ, то это может произойти без всякого HTTP.
...
Рейтинг: 0 / 0
12.04.2016, 14:10
    #39213637
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1как на уровне соединения это регулируется ?

Имеет смысл начать читать про Ethernet и TCP/IP
...
Рейтинг: 0 / 0
12.04.2016, 14:12
    #39213642
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Blazkowicz,
+1
Например, по AJAX объект в ослике сначала устанавливает канал - рукопожатие.
А потом шлёт запрос и ждёт ответ.
Так что вопрос автора странный.
...
Рейтинг: 0 / 0
12.04.2016, 14:14
    #39213645
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1сервер может ошибиться и сформировать другой ответ и подсунуть мне ...

Защита от криворуких девелоперов, которые делают глобальные переменные? Или что?

Atum1нужна верификация ...
например я могу в параметры добавить sha всех полей и подпись - так же требовать от сервера и как то сверять ...
вопрос все такие есть :

Сервер возьмет ответ другого клиента, подпишет его вашими ключами. Что вы тогда делать будете?

Вы боретесь с надуманной проблемой. Возможно, вы просто не правильно сформулировали действительно актуальную для вас проблему.
...
Рейтинг: 0 / 0
12.04.2016, 14:17
    #39213651
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
BlazkowiczAtum1нужна верификация ...
например я могу в параметры добавить sha всех полей и подпись - так же требовать от сервера и как то сверять ...
вопрос все такие есть :

Сервер возьмет ответ другого клиента, подпишет его вашими ключами. Что вы тогда делать будете?

Вы боретесь с надуманной проблемой. Возможно, вы просто не правильно сформулировали действительно актуальную для вас проблему.

Подмена может быть, но вряд ли на стороне сервера.

Или подменили сам сервер (например приникнув в DNS) или, потенциально, злоумышленник мог подменить ряд пакетов с ответом.

Но вроде это уже проблемой не является, т.к. HTTPS от всего этого должен спасать.
...
Рейтинг: 0 / 0
12.04.2016, 14:24
    #39213658
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Leonid KudryavtsevПодмена может быть, но вряд ли на стороне сервера.

О том и речь.

Leonid Kudryavtsevпотенциально, злоумышленник мог подменить ряд пакетов с ответом.
У этого есть вполне устоявшийся термин - man-in-the-middle attack

Leonid KudryavtsevНо вроде это уже проблемой не является, т.к. HTTPS от всего этого должен спасать.
Где-то была не так давно интересная статья, про то чего спасает HTTPS, а от чего - нет. Но не могу найти больше.
По-моему что-то про перехват сессии в wi-fi сети, даже при наличии HTTPS.
...
Рейтинг: 0 / 0
12.04.2016, 15:03
    #39213713
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Blazkowicz,

сервер писан на с++

руками, и очень отвратно :-( все руками.... какая там архитектура и как он обрабатывает запросы это большой вопрос... может и не по стандарту...
...
Рейтинг: 0 / 0
12.04.2016, 15:10
    #39213727
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1сервер писан на с++
руками, и очень отвратно :-( все руками.... какая там архитектура и как он обрабатывает запросы это большой вопрос... может и не по стандарту...
Ага. То есть существует какое-то древнее дерьмо мамонта и нужна защита на клиенте. Это же совсем другая постановка вопроса.
Но тут все зависит от того что именно этот сервер умеет. Нужно просто найти какое-то значение, которое он умеет возвращать в первозданном виде. Его на клиенте и использовать. Привязываться к HTTP я смысла не вижу, кто запрещает серверу взять ответ другого клиента и смешать его с твоими HTTP заголовками?
...
Рейтинг: 0 / 0
12.04.2016, 15:10
    #39213728
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1сервер писан на с++
если самописный, то всё что угодно может быть.
...
Рейтинг: 0 / 0
12.04.2016, 15:11
    #39213731
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1,
я бы в продакшен такой сервер не...
...
Рейтинг: 0 / 0
12.04.2016, 15:14
    #39213737
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Atum1,

Валидировать надо именно бизнес логику, а не HTTP. Вот, смотри, запрос же идет так: Клиент -> HTTP клиент -> TCP -> HTTP сервер -> Бизнес логика. И потом обратно.

Так вот, если ты решил привязать валидацию к HTTP, то серверу ничего не помешает нафакапить в бизнес-логике и отдать чужой ответ в твой HTTP канал. Именно поэтому валидацию нужно привязывать только к бизнес логике.
...
Рейтинг: 0 / 0
12.04.2016, 15:21
    #39213749
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Возможно проблема с асинхронными запросами? Она решается, например, их нумерацией.
...
Рейтинг: 0 / 0
12.04.2016, 15:37
    #39213775
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Локшин МаркВозможно проблема с асинхронными запросами? Она решается, например, их нумерацией.
Это как? Кто их шлёт асинхронно? Если по БЛ плевать на ответы (синхронные) тогда конечно.
...
Рейтинг: 0 / 0
12.04.2016, 15:41
    #39213783
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
как вариант один сервер(сервис) один пользователь :)
можно запустить pool серверов на разные порты и спрятать их за nginx.
соотвественно останется настроить и тут уж варианты.
1. можно не более одного запроса на сервер т.е. пока не обработает запрос не может получиться новый.
2. каждый сервер на определенный IP клиента (если они статические или например идентификатор какой нибудь в header запихать чтобы Nginx его отловить мог. )

можно еще чего придумать.
...
Рейтинг: 0 / 0
12.04.2016, 15:42
    #39213785
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
llemingкак вариант один сервер(сервис) один пользователь :)
можно запустить pool серверов на разные порты и спрятать их за nginx.
соотвественно останется настроить и тут уж варианты.
1. можно не более одного запроса на сервер т.е. пока не обработает запрос не может получиться новый.
2. каждый сервер на определенный IP клиента (если они статические или например идентификатор какой нибудь в header запихать чтобы Nginx его отловить мог. )

можно еще чего придумать.

Прям рецепт многопоточности для R
...
Рейтинг: 0 / 0
12.04.2016, 15:45
    #39213791
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
llemingможно еще чего придумать.
))
...
Рейтинг: 0 / 0
12.04.2016, 16:07
    #39213825
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять что я получил от http сервера именно свой ответ ?
Вот наболтали. Автор невразумительно описал, что ему надо. Поэтому правильный ответ состоял бы в требовании к нему описать это вразумительно. Вместо этого началось гадание, а что ему может быть нужно. Не объясняет - пусть догадывается сам.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как понять что я получил от http сервера именно свой ответ ? / 25 сообщений из 53, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]