web-dev-qa-db-fra.com

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

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?

26
JAVA

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 pare-feu 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 des 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 ne identifie de façon unique un client dans tous les cas.

83
user22815

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, en général, vous ne pouvez pas.

Si vous exécutez un site public, la plupart des adresses IP qui frappent 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.

18
svidgen

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.
10
200_success

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 si des machines

2
Dice9

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 exact.

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.

1
Pieter B