Dlaczego nie możemy używać adresu IP zamiast plików cookie do identyfikacji klienta w serwletach?

26

Wiem, że mamy dodatkowe zalety w korzystaniu z plików cookie zamiast adresu IP, ale moje pytanie brzmi: dlaczego kontener nie może po prostu zapamiętać adresu IP klienta podczas identyfikacji klienta, gdy ponownie odwiedza swoją stronę? Czy kontener może zapamiętać klienta za pomocą adresu IP?

JAWA
źródło
47
Adresy IP nie są unikalne. Co dzieje się, gdy dwie osoby stoją za tym samym routerem?
Doval
7
Co się stanie, gdy jedna osoba używa Tora?
12
Adresy IP ludzi mogą się często zmieniać (domowy szerokopasmowy Internet).
GrandmasterB
6
Serwery proxy pojawiają się jako 1 adres IP, niezależnie od tego, ile osób stoi za nimi, na przykład wszyscy w firmie.
Jeff-Inventor ChromeOS
4
@ Jeff-InventorChromeOS I odwrotnie: niektórzy dostawcy usług internetowych mają klastry serwerów proxy, dzięki czemu żądania jednego użytkownika mogą wydawać się, że pochodzą z wielu adresów IP. Na przykład, kiedy ostatnio sprawdzałem, AOL to zrobił.
Jules

Odpowiedzi:

84

Klient jest identyfikowany przez plik cookie oraz adres IP. Jednak adresu IP nie można używać wyłącznie:

  • Co jeśli dwóch klientów znajduje się za tą samą zaporą NAT lub proxy? Będą miały ten sam zewnętrzny adres IP do serwera.
  • Co jeśli użytkownik ma dwie różne przeglądarki otwarte na tym samym komputerze i chce dwóch osobnych sesji (może do testowania?)
  • Użytkownik może mieć dynamiczny adres IP, który można zmienić podczas sesji.
  • Osoba atakująca może sfałszować adres IP i przejąć sesję, jeśli polegał na samym adresie IP.

Oznacza to, że adres IP nie zawsze jednoznacznie identyfikuje klienta.


źródło
19
Użycie adresu IP w ogóle do identyfikacji klienta to ogromny błąd. Mój adres IP prawdopodobnie zmienia się kilka razy na minutę, idąc ulicą, uzyskując dostęp do witryny z mojego telefonu.
R ..
5
@R .. Przykro mi, ale jest to rażąco złe. Twoja komórka radiowa nie ma nic wspólnego z twoim adresem IP, warstwa IP jest powyżej komunikacji komórkowej (przy użyciu warstwy fizycznej) w modelu OSI. Mimo to używanie adresu IP do identyfikacji klientów jest nadal błędne, ale nie z tego powodu.
Przywróć Monikę - dirkk
11
@dirkk Jeśli korzysta z Wi-Fi i łączy się z różnymi, niezależnymi sieciami z publicznymi adresami IP, to z pewnością może się zdarzyć. Sieć komórkowa może również zdecydować o podaniu różnych adresów IP podczas zmiany komórek. Jeśli podłączę (warstwę 1) laptopa do innej sieci, z pewnością może to zmienić mój adres IP (warstwa 3).
Bob
8
Nie jestem ekspertem od tego, w jaki sposób telefony bezprzewodowe przypisują adresy IP, ale mogę rozmawiać z Wi-Fi: gdybym szedł ruchliwą ulicą i miałbym skonfigurowane urządzenie bezprzewodowe do łączenia się z dowolną siecią Wi-Fi, którą mógłbym, w pełni oczekiwałbym jego adres IP Wi-Fi często się zmienia.
7
@dirkk: Nie oskarżaj mnie, że się mylę w sprawie, o której nie masz pojęcia. Jak podejrzewa Bob, I został mówić o wifi. Mam dostęp do ponad 8 kawiarni i innych punktów dostępu do biznesu, a także (niższej jakości) miejskich punktów dostępu Wi-Fi wzdłuż ulicy, a mój telefon regularnie przeskakuje między nimi podczas spaceru.
R ..
18

Czasami można można użyć adresu IP.

Jeśli korzystasz z sieci LAN lub w inny sposób masz do czynienia wyłącznie z użytkownikami, których adresy IP są statycznie dystrybuowane do pojedynczych klientów, użycie tego adresu jest całkowicie w porządku - czasem preferowane i konieczne.

Ale zwykle nie możesz.

Jeśli prowadzisz witrynę publiczną, większość adresów IP trafiających na twój serwer nie jest statyczna ani dedykowana. Większość z nich reprezentuje wielu klientów: komputer stacjonarny, laptop i telefon komórkowy wychodzą na ten sam adres IP, gdy jesteś w sieci domowej. I to IP może się zmienić - nawet w trakcie sesji.

svidgen
źródło
2
Nawet na Lan nie możesz. Jeśli otworzę witrynę w przeglądarce Firefox i Internet Explorer, w pełni spodziewam się dwóch różnych sesji.
Pieter B,
@PieterB Nie zrozumiałem twojego sensu innej sesji. Czy możesz to wyjaśnić?
JAVA,
1
@java, kiedy loguję się na stronie mojego banku za pomocą przeglądarki Firefox, nie oczekuję, że zaloguję się w chrome. Obie przeglądarki działają niezależnie z własnymi sesjami.
Pieter B,
1
@PieterB Nadal zależy to tylko od wymagań. Jeśli wymagania określają, że każda „sesja” powinna obejmować wszystkich klientów internetowych na urządzeniu lokalnym, adres IP jest prawdopodobnie tym, czego chcesz.
svidgen
10

Trzy kolejne powody, aby dodać:

  1. Istnieją stacje robocze i serwery terminali dla wielu użytkowników. Wielu użytkowników może uruchamiać całkowicie niezależne procesy przeglądarki w oddzielnych sesjach.
  2. Adresy IP nie są trwałe. Można go ponownie przypisać po wygaśnięciu dzierżawy DHCP.
  3. Aplikacja powinna obsługiwać roaming. Na przykład użytkownik telefonu może utracić zasięg WiFi i zostać przekazany do połączenia 3G. Adres IP by się zmienił, ale fajnie byłoby pozwolić aplikacji internetowej dalej działać.
200_sukces
źródło
2

Używanie adresu IP jako identyfikatora na ogół nie jest zalecane, ponieważ nie jest to adres IP - funkcjonalnie jest to zwykły adres do routingu od a do b, i nie mówi nic, co jest przed a lub po b.

Na przykład ten sam adres IP może być współużytkowany przez wiele natowanych urządzeń, z których najczęstszymi są

a) dostawca dynamicznie przypisuje pulę adresów swoim klientom, co jest dość powszechne, gdy kupujesz taką samą liczbę adresów publicznych, że możesz obsłużyć więcej klientów (potrzebujesz tylko wystarczającej liczby adresów dla równoczesnych użytkowników, a nie dla wszystkich użytkowników)

b) prywatna sieć uzyskująca dostęp do sieci z jednego adresu, wewnętrznie przekierowująca pakiety do setek lub tysięcy, jeśli maszyny

Kości 9
źródło
1

Poza tym dwa komputery mogą znajdować się za NAT i mieć ten sam adres IP, twoja koncepcja klienta musi być poprawna.

Klient bardzo NIE jest komputerem, z którym się komunikujesz, ale przeglądarką działającą na tym komputerze.

Twoja przeglądarka nie dba o to, jaki adres IP ma Twój komputer, a system operacyjny. I dlatego nie możesz polegać na adresach IP. Przeglądarka dba o pliki cookie i są one kontrolowane przez przeglądarkę. Dlatego używasz plików cookie do sesji.

Pieter B.
źródło