Почему мы не можем использовать IP-адрес вместо файлов cookie для идентификации клиента в сервлетах?

26

Я знаю, что у нас есть некоторые дополнительные преимущества в использовании файлов cookie по IP-адресу, но мой вопрос: почему контейнер не может просто запомнить IP-адрес клиента при идентификации клиента, когда он снова посещает свой сайт? Возможно ли, чтобы контейнер запомнил клиента с помощью IP-адреса?

ДЖАВА
источник
47
IP-адреса не являются уникальными. Что происходит, когда два человека находятся за одним маршрутизатором?
Довал
7
Что происходит, когда один человек использует Tor?
12
И IP-адреса людей могут часто меняться (домашний широкополосный доступ).
GrandmasterB
6
Прокси отображаются как 1 IP-адрес, независимо от того, сколько людей за ними, например, все в компании.
Джефф-Изобретатель ChromeOS
4
@ Jeff-InventorChromeOS И наоборот: некоторые интернет-провайдеры имеют кластеры прокси-серверов, так что запросы одного пользователя могут поступать с нескольких IP-адресов. В прошлый раз, когда я проверял, AOL сделал это, например.
Жюль

Ответы:

84

Клиент идентифицируется по cookie, а также по IP-адресу. Тем не менее, IP-адрес не может использоваться исключительно:

  • Что если два клиента находятся за одним и тем же межсетевым экраном или прокси-сервером NAT? Они будут иметь одинаковый внешний IP-адрес для сервера.
  • Что, если у пользователя есть два разных браузера, открытых на одной машине, и ему нужны два отдельных сеанса (возможно, для тестирования?)
  • Пользователь может иметь динамический IP-адрес, который предположительно может измениться во время сеанса.
  • Злоумышленник может подделать IP-адрес и перехватить сеанс, если он использует только IP-адрес.

Это означает, что IP-адрес не всегда однозначно идентифицирует клиента.


источник
19
Использование IP-адреса для идентификации клиента - огромная ошибка. Мой IP-адрес, вероятно, меняется несколько раз в минуту, когда я иду по улице, получая доступ к сайту с моего телефона.
R ..
5
@R .. Извини, но это явно неправильно. Ваша радиоячейка не имеет ничего общего с вашим IP-адресом, уровень IP находится выше связи соты (с использованием физического уровня) в модели OSI. Тем не менее, использование IP-адреса для идентификации клиентов все еще неправильно, но не по этой причине.
Восстановить Монику - Диркк
11
@dirkk Если он подключен к WiFi и подключается к разным независимым сетям с публичными IP-адресами, это, безусловно, может произойти. Мобильная сеть также может принять решение предоставить разные IP-адреса при смене ячеек. Если я подключу (layer1) моего ноутбука к другой сети, это, безусловно, может изменить мой IP (layer3).
Боб
8
Я не эксперт в том, как беспроводные телекоммуникационные компании назначают IP-адреса, но я могу говорить с Wi-Fi: если бы я шел по оживленной улице, и у меня было настроено мое беспроводное устройство для подключения к любой сети Wi-Fi, я мог бы ожидать его Wi-Fi IP-адрес часто меняется.
7
@dirkk: Пожалуйста, не обвиняйте меня в том, что я ошибаюсь из-за чего-то, о чем вы даже не подозреваете. Как и предполагалось Боб, я был говорить о Wi - Fi. У меня есть доступ к 8+ кафе и другим точкам доступа для бизнеса, а также (некачественным) городским точкам доступа Wi-Fi вдоль улицы, и мой телефон регулярно прыгает между ними во время ходьбы.
R ..
18

Иногда вы можете использовать IP-адрес.

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

Но обычно вы не можете.

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

svidgen
источник
2
Даже на Лане вы не можете. Если я открою сайт в Firefox и Internet Explorer, я ожидаю, что у меня будет два разных сеанса.
Питер Б
@PieterB Я не понял твою точку зрения на другую сессию. Не могли бы вы объяснить это?
JAVA
1
@java, когда я захожу на сайт своего банка с помощью Firefox, я не ожидаю, что войду с помощью Chrome. Оба браузера работают независимо со своими сессиями.
Питер Б
1
@PieterB Это все еще зависит только от требований. Если требования гласят, что каждый «сеанс» должен охватывать «все веб-клиенты на локальном устройстве», «IP-адрес, вероятно, то, что вам нужно».
svidgen
10

Еще три причины, чтобы добавить:

  1. Существуют многопользовательские рабочие станции и терминальные серверы. Многие пользователи могут запускать совершенно независимые процессы браузера в отдельных сеансах.
  2. IP-адреса не постоянны. Он может быть переназначен после истечения срока аренды DHCP.
  3. Приложение должно поддерживать роуминг. Например, пользователь на телефоне может выйти из диапазона WiFi и получить соединение 3G. IP-адрес изменится, но было бы хорошо, чтобы веб-приложение продолжало работать.
200_success
источник
2

Использование IP-адреса в качестве идентификатора, как правило, не рекомендуется, поскольку это не то, для чего предназначен IP-адрес - функционально это простой адрес для маршрутизации от a до b, и он ничего не говорит о том, что находится до a или после b.

Например, один и тот же IP-адрес может совместно использоваться несколькими устройствами с натурой, в большинстве случаев

a) провайдер, динамически назначающий пул адресов своим клиентам, что довольно распространено: покупая такое же количество публичных адресов, вы можете обслуживать больше клиентов (вам нужно достаточно адресов для одновременных пользователей, а не для всех пользователей)

б) частная сеть, обращающаяся к сети с одного адреса, внутренне перенаправляя пакеты на сотни или тысячи машин

Dice9
источник
1

Помимо того, что два компьютера могут находиться за NAT и иметь одинаковый IP-адрес, ваша концепция клиента должна быть правильной.

Клиент - это НЕ компьютер, с которым вы общаетесь, а браузер, работающий на этом компьютере.

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

Питер Б
источник