Pourquoi ne pouvons-nous pas utiliser l'adresse IP au lieu des cookies pour identifier le client dans les servlets?

26

Je sais que nous avons des avantages supplémentaires à utiliser les cookies sur l'adresse IP, mais ma question est la suivante: pourquoi le conteneur ne peut-il pas simplement se souvenir de l'adresse IP du client lorsqu'il identifie le client lors de sa prochaine visite sur son site? Est-il possible que le conteneur se souvienne du client à l'aide de l'adresse IP?

JAVA
la source
47
Les adresses IP ne sont pas uniques. Que se passe-t-il lorsque deux personnes se trouvent derrière le même routeur?
Doval
7
Que se passe-t-il lorsqu'une personne utilise Tor?
12
Et les adresses IP des gens peuvent changer fréquemment (haut débit à domicile).
GrandmasterB
6
Les proxys apparaissent comme une seule adresse IP, quel que soit le nombre de personnes derrière eux, par exemple tout le monde dans une entreprise.
Jeff-Inventor ChromeOS
4
@ Jeff-InventorChromeOS Et vice versa également: certains FAI ont des clusters de serveurs proxy tels que les demandes d'un seul utilisateur peuvent sembler provenir de plusieurs adresses IP. La dernière fois que j'ai vérifié, AOL a fait cela, par exemple.
Jules

Réponses:

84

Un client est identifié par un cookie ainsi que l'adresse IP. Cependant, l'adresse IP ne peut pas être utilisée exclusivement:

  • Que faire si deux clients se trouvent derrière le même pare-feu NAT ou proxy? Ils auront la même adresse IP externe au serveur.
  • Que se passe-t-il si un utilisateur a deux navigateurs différents ouverts sur la même machine et souhaite deux sessions distinctes (peut-être pour les tests?)
  • Un utilisateur peut avoir une adresse IP dynamique qui pourrait éventuellement changer au cours d'une session.
  • Un attaquant peut être capable d'usurper une adresse IP et de reprendre une session s'il se fie uniquement à l'adresse IP.

Cela signifie qu'une adresse IP n'identifie pas de manière unique un client dans tous les cas.


la source
19
L'utilisation d'une adresse IP pour identifier un client est un énorme bug. Mon adresse IP change probablement plusieurs fois par minute en marchant dans la rue pour accéder à un site depuis mon téléphone.
R ..
5
@R .. Je suis désolé, mais c'est manifestement faux. Votre cellule radio n'a rien à voir avec votre adresse IP, la couche IP est au-dessus de la communication cellulaire (en utilisant la couche physique) dans le modèle OSI. Pourtant, utiliser l'adresse IP pour identifier les clients est toujours faux, mais pas pour cette raison.
Reinstate Monica - dirkk
11
@dirkk S'il est sur WiFi et qu'il se connecte à des réseaux différents et indépendants avec leurs IP publiques, cela peut certainement arriver. Un réseau mobile peut également décider de fournir différentes adresses IP lorsque vous changez de cellule. Si je branche (couche 1) mon ordinateur portable sur un autre réseau, cela pourrait certainement changer mon adresse IP (couche 3).
Bob
8
Je ne suis pas un expert sur la façon dont les opérateurs sans fil attribuent des adresses IP, mais je peux parler au wifi: si je marchais dans une rue animée et que mon appareil sans fil était configuré pour se connecter à n'importe quel réseau wifi possible, je m'attendrais pleinement son adresse IP wifi pour changer fréquemment.
7
@dirkk: Veuillez ne pas m'accuser de me tromper sur quelque chose dont vous n'avez aucune idée. Comme Bob soupçonné, je me parle wifi. J'ai accès à plus de 8 cafés et autres points d'accès aux entreprises, ainsi qu'à des points d'accès wifi fournis par la ville (de qualité inférieure) le long de la rue, et mon téléphone passe régulièrement entre eux en marchant.
R ..
18

Parfois, vous pouvez utiliser l'adresse IP.

Si vous êtes sur un réseau local ou si vous traitez exclusivement avec des utilisateurs dont les adresses IP sont distribuées statiquement à des clients uniques, l'utilisation de cette adresse est parfaitement correcte - parfois préférable et nécessaire.

Mais, généralement, vous ne pouvez pas.

Si vous exécutez un site public, la plupart des adresses IP qui atteignent votre serveur ne sont pas statiques ou dédiées. La plupart d'entre eux représentent plusieurs clients: votre ordinateur de bureau, votre ordinateur portable et votre téléphone portable s'étendent tous sur la même adresse IP lorsque vous êtes sur votre réseau domestique. Et cette adresse IP peut changer - même en cours de session.

svidgen
la source
2
Même sur un Lan, vous ne pouvez pas. Si j'ouvre un site dans Firefox et Internet Explorer, je m'attends à avoir deux sessions différentes.
Pieter B
@PieterB Je n'ai pas compris votre point de vue sur les différentes sessions. Pouvez-vous l'expliquer?
JAVA du
1
@java lorsque je me connecte au site Web de ma banque avec Firefox, je ne m'attends pas à être connecté avec Chrome. Les deux navigateurs fonctionnent indépendamment avec leurs propres sessions.
Pieter B
1
@PieterB Cela dépend toujours des exigences. Si les exigences stipulent que chaque "session" doit s'étendre sur "tous les clients Web sur un périphérique local", l'adresse IP est probablement celle que vous souhaitez.
svidgen
10

Trois autres raisons d'ajouter:

  1. Il existe des postes de travail multi-utilisateurs et des serveurs de terminaux. De nombreux utilisateurs peuvent exécuter des processus de navigateur complètement indépendants dans des sessions distinctes.
  2. Les adresses IP ne sont pas persistantes. Il pourrait être réaffecté à l'expiration d'un bail DHCP.
  3. L'application doit prendre en charge l'itinérance. Par exemple, un utilisateur sur un téléphone peut abandonner la portée Wi-Fi et se laisser transférer vers une connexion 3G. L'adresse IP changerait, mais ce serait bien de laisser l'application Web continuer à fonctionner.
200_success
la source
2

Il n'est généralement pas recommandé d'utiliser l'adresse IP comme identifiant, car ce n'est pas à cela que l'adresse IP est destinée - fonctionnellement, c'est une adresse simple pour le routage de a vers b, et elle ne dit rien de ce qui est avant a ou après b.

Par exemple, la même adresse IP peut être partagée par un certain nombre de périphériques en réseau, les cas les plus courants étant

a) un fournisseur attribuant dynamiquement un pool d'adresses à ses clients, ce qui est assez courant car en achetant la même quantité d'adresses publiques, vous pouvez servir plus de clients (vous avez juste besoin de suffisamment d'adresses pour les utilisateurs simultanés, pas du nombre total d'utilisateurs)

b) un réseau privé accédant au Web à partir d'une seule adresse, redirigeant en interne des paquets vers des centaines ou des milliers de machines

Dés9
la source
1

En dehors de cela, deux ordinateurs peuvent être derrière un NAT et avoir la même adresse IP, votre concept de client doit être correct.

Le client n'est PAS l'ordinateur avec lequel vous communiquez, mais le navigateur qui s'exécute sur cet ordinateur.

Votre navigateur ne se soucie pas beaucoup de l'adresse IP de votre ordinateur, de votre système d'exploitation. Et c'est pourquoi vous ne pouvez pas compter sur les adresses IP. Le navigateur se soucie des cookies et ils sont sous le contrôle des navigateurs. C'est pourquoi vous utilisez des cookies pour les sessions.

Pieter B
la source