Perché non possiamo usare l'indirizzo IP invece dei cookie per identificare il client nei servlet?

26

So che abbiamo alcuni vantaggi in più nell'utilizzare i cookie tramite l'indirizzo IP, ma la mia domanda è: perché il contenitore non può ricordare l'indirizzo IP del client nell'individuare il client quando visita nuovamente il suo sito? È possibile che il contenitore ricordi il cliente con l'aiuto dell'indirizzo IP?

    
posta JAVA 14.08.2014 - 18:49
fonte

5 risposte

84

Un client è identificato da un cookie e dall'indirizzo IP. Tuttavia, l'indirizzo IP non può essere utilizzato esclusivamente:

  • Cosa succede se due client si trovano dietro lo stesso firewall o proxy NAT? Avranno lo stesso indirizzo IP esterno sul server.
  • Che succede se un utente ha due diversi browser aperti sulla stessa macchina e desidera due sessioni separate (magari per i test?)
  • Un utente può avere un indirizzo IP dinamico che potrebbe cambiare durante una sessione.
  • Un utente malintenzionato potrebbe essere in grado di eseguire lo spoofing di un indirizzo IP e assumere una sessione se si basava solo sull'indirizzo IP.

Questo significa che un indirizzo IP non identifica in modo univoco un client in tutti i casi.

    
risposta data 14.08.2014 - 18:55
fonte
18

A volte puoi utilizzare l'indirizzo IP.

Se sei su una LAN o se lavori esclusivamente con utenti che hanno IP distribuiti in modo statico a singoli client, l'uso di quell'indirizzo è perfetto, a volte preferibile e necessario.

Ma di solito non puoi.

Se stai eseguendo un sito pubblico, la maggior parte degli indirizzi IP che colpiscono il tuo server non sono statici o dedicati. Molti di questi rappresentano più client: il desktop, il laptop e il cellulare escono tutti dello stesso indirizzo IP quando si è sulla rete domestica. E questo IP può cambiare, anche a metà sessione.

    
risposta data 14.08.2014 - 19:07
fonte
10

Altri tre motivi da aggiungere:

  1. Esistono workstation multiutente e terminal server. Molti utenti potrebbero eseguire processi browser completamente indipendenti in sessioni separate.
  2. Gli indirizzi IP non sono persistenti. Potrebbe essere riassegnato quando scade un lease DHCP.
  3. L'applicazione dovrebbe supportare il roaming. Ad esempio, un utente su un telefono potrebbe abbandonare la portata WiFi e passare alla connessione 3G. L'indirizzo IP cambierebbe, ma sarebbe bello lasciare che l'applicazione web continui a funzionare.
risposta data 15.08.2014 - 03:51
fonte
2

L'uso dell'indirizzo IP come identificatore è in genere sconsigliato, in quanto non è quello che l'indirizzo IP è inteso - dal punto di vista funzionale è un indirizzo semplice per il routing da a a b, e non dice nulla di ciò che è prima o dopo b.

Ad esempio, lo stesso indirizzo IP può essere condiviso da un numero di dispositivi nattati, i casi più comuni sono

a) un fornitore che assegna dinamicamente un pool di indirizzi ai propri clienti, che è abbastanza comune come l'acquisto della stessa quantità di indirizzi pubblici è possibile servire più clienti (sono necessari solo indirizzi sufficienti per utenti simultanei, non totali)

b) una rete privata che accede al web da un unico indirizzo, reindirizzando internamente i pacchetti a centinaia o migliaia se macchine

    
risposta data 14.08.2014 - 23:24
fonte
1

A parte il fatto che due computer possono trovarsi dietro un NAT e hanno lo stesso indirizzo IP, il tuo concetto di client deve essere corretto.

Il client NON è il computer con cui stai comunicando, ma il browser che gira su quel computer.

Il tuo browser non si preoccupa molto di quale indirizzo IP ha il tuo computer, il tuo sistema operativo lo fa. Ed è per questo che non puoi fare affidamento su indirizzi IP. Il browser si occupa dei cookie e sono sotto il controllo dei browser. Ecco perché usi i cookie per le sessioni.

    
risposta data 15.12.2015 - 10:16
fonte

Leggi altre domande sui tag