Могут ли запросы GET и POST с одной и той же машины поступать с разных IP-адресов?

Я почти уверен, что помню, как читал - но больше не могу найти ссылки - об этом: на некоторых интернет-провайдерах (включая, по крайней мере, одного крупного интернет-провайдера в США) может появиться запрос пользователя GET и POST. с разных IP.

(обратите внимание, что это полностью связано с программированием, ниже я приведу пример)

Я не говорю о динамическом изменении вашего IP-адреса между двумя запросами.

Я об этом:

IP 1:  123.45.67.89
IP 2:  101.22.33.44

Тот же пользователь выполняет GET, затем POST, затем снова GET, затем снова POST, и серверы видят следующее:

- GET  from IP 1
- POST from IP 2
- GET  from IP 1
- POST from IP 2

Таким образом, несмотря на то, что это один и тот же пользователь, веб-сервер видит разные IP-адреса для GET и POST.

Наверняка видели, что HTTP — это протокол без сохранения состояния, это совершенно законно, верно?

Я хотел бы найти объяснение того, как и почему некоторые интернет-провайдеры настраивают свои сети таким образом, чтобы это могло произойти.

Я спрашиваю, потому что кто-то попросил меня реализовать следующий IP-фильтр, и я почти уверен, что это принципиально сломанный код (нарушение хаоса по крайней мере для одного крупного американского интернет-пользователя).

Вот фильтр сервлета Java, который должен защищать от некоторых атак. Причина в том, что:

"Для любого сеанса фильтр проверяет, что IP-адрес в запросе совпадает с тем, который использовался при создании сеанса. Таким образом, в этом случае идентификатор сеанса не может быть украден для формирования фальшивых сеансов."

http://www.servletsuite.com/servlets/protectsessionsflt.htm

Однако я почти уверен, что это по своей сути не работает, потому что есть интернет-провайдеры, у которых вы можете видеть GET и POST, поступающие с разных IP-адресов.


person NoozNooz42    schedule 29.05.2010    source источник
comment
Интересно, хотелось бы узнать об этом.   -  person DMin    schedule 29.05.2010


Ответы (2)


Некоторые интернет-провайдеры (или университетские сети) используют прозрачные прокси-серверы, которые ретранслируют запрос от исходящего узла, который испытывает наименьшую нагрузку на сеть.

Также можно было бы настроить это на локальном компьютере, чтобы использовать сетевую карту с наименьшей нагрузкой, что, опять же, может привести к этой ситуации.

Вы правы в том, что это действительное состояние для HTTP, и, хотя оно должно происходить относительно редко, именно поэтому проверка пользователя на основе IP не является подходящим определением личности.

person Martin Eve    schedule 29.05.2010

Для веб-сервера это означает, что конечный пользователь находится за каким-то прокси/шлюзом. Как вы говорите, это совершенно справедливо, учитывая, что HTTP не имеет состояния, но я думаю, что это было бы необычно. Насколько мне известно, большинство интернет-провайдеров назначают домашним пользователям настоящий, непереведенный IP-адрес (хотя обычно динамический).

Конечно, для корпоративных/институциональных сетей они могут делать что угодно. балансировка нагрузки может означать, что запросы поступают с разных IP-адресов, и, возможно, иногда типы запросов передаются на разные шлюзы (хотя мне было бы интересно узнать, почему, учитывая, что N_GET >> N_POST).

person Richard H    schedule 29.05.2010