Por que não podemos usar o endereço IP em vez de cookies na identificação do cliente nos servlets?

26

Sei que temos algumas vantagens extras no uso de cookies sobre o endereço IP, mas minha pergunta é: Por que o contêiner não consegue se lembrar do endereço IP do cliente ao identificar o cliente quando ele visita seu site novamente? É possível que o contêiner se lembre do cliente com a ajuda do endereço IP?

JAVA
fonte
47
Endereços IP não são únicos. O que acontece quando duas pessoas estão atrás do mesmo roteador?
Doval
7
O que acontece quando uma pessoa está usando o Tor?
12
E os endereços IP das pessoas podem mudar com frequência (banda larga doméstica).
GrandmasterB
6
Os proxies aparecem como 1 endereço IP, independentemente de quantas pessoas estejam atrás deles, por exemplo, todos da empresa.
Jeff-Inventor ChromeOS
4
@ Jeff-InventorChromeOS E vice-versa também: alguns ISPs têm clusters de servidores proxy, de forma que as solicitações de um único usuário podem parecer provenientes de vários endereços IP. A última vez que verifiquei, a AOL fez isso, por exemplo.
Jules

Respostas:

84

Um cliente é identificado por um cookie e também pelo endereço IP. No entanto, o endereço IP não pode ser usado exclusivamente:

  • E se dois clientes estiverem localizados atrás do mesmo firewall ou proxy NAT? Eles terão o mesmo endereço IP externo para o servidor.
  • E se um usuário tiver dois navegadores diferentes abertos na mesma máquina e desejar duas sessões separadas (talvez para teste?)
  • Um usuário pode ter um endereço IP dinâmico que pode ser alterado durante uma sessão.
  • Um invasor pode ser capaz de falsificar um endereço IP e assumir uma sessão se depender apenas do endereço IP.

Isso significa que um endereço IP não identifica exclusivamente um cliente em todos os casos.


fonte
19
Usar um endereço IP para identificar um cliente é um erro enorme. Meu endereço IP provavelmente muda várias vezes por minutos enquanto caminhava pela rua acessando um site pelo meu telefone.
R ..
5
@R .. Me desculpe, mas isso é flagrantemente errado. Sua célula de rádio não tem nada a ver com o seu endereço IP, a camada IP está acima da comunicação da célula (usando a camada física) no modelo OSI. Ainda assim, o uso do endereço IP para identificar clientes ainda está errado, mas não por esse motivo.
Reintegrar Monica - dirkk
11
@dirkk Se ele usa Wi-Fi e se conecta a redes diferentes e independentes com IPs públicos, isso certamente pode acontecer. Uma rede móvel também pode decidir fornecer endereços IP diferentes quando você altera as células. Se eu conectar (layer1) meu laptop a uma rede diferente, isso certamente poderá alterar meu IP (layer3).
Bob
8
Não sou especialista em como as empresas de telecomunicações sem fio atribuem endereços IP, mas posso falar com o wifi: se eu estivesse andando por uma rua movimentada e tivesse meu dispositivo sem fio configurado para conectar-se a toda e qualquer rede wifi possível, esperaria plenamente seu endereço IP wifi para mudar com freqüência.
7
@dkkkk: Por favor, não me acuse de estar errado sobre algo que você não tem idéia. Como Bob suspeitava, eu estava falando sobre wifi. Tenho acesso a mais de 8 cafés e outros pontos de acesso de negócios, além de pontos de acesso Wi-Fi fornecidos pela cidade (de menor qualidade) ao longo da rua, e meu telefone salta regularmente entre eles enquanto caminha.
R ..
18

Às vezes você pode usar o endereço IP.

Se você estiver em uma LAN ou estiver lidando exclusivamente com usuários com IPs estaticamente distribuídos para clientes únicos, usar esse endereço é perfeitamente adequado - às vezes preferível e necessário.

Mas, geralmente você não pode.

Se você estiver executando um site público, a maioria dos endereços IP que atingem o servidor não é estática ou dedicada. A maioria deles representa vários clientes: seu desktop, laptop e celular saem pelo mesmo endereço IP quando você está na sua rede doméstica. E esse IP pode mudar - mesmo no meio da sessão.

svidgen
fonte
2
Mesmo em uma Lan, você não pode. Se eu abrir um site no Firefox e no Internet Explorer, espero ter duas sessões diferentes.
Pieter B
@PieterB Eu não entendi o seu ponto de vista da sessão diferente. Você pode explicar isso?
JAVA
1
@java Quando entro no site do meu banco com o Firefox, não espero estar conectado com o chrome. Ambos os navegadores trabalham independentemente com suas próprias sessões.
Pieter B
1
@PieterB Ainda depende apenas dos requisitos. Se os requisitos indicarem que toda "sessão" deve abranger "todos os clientes da Web em um dispositivo local", provavelmente o endereço IP é o que você deseja.
svidgen
10

Mais três razões para adicionar:

  1. Existem estações de trabalho multiusuário e servidores de terminal. Muitos usuários podem estar executando processos de navegador completamente independentes em sessões separadas.
  2. Endereços IP não são persistentes. Pode ser reatribuído quando uma concessão DHCP expirar.
  3. O aplicativo deve suportar roaming. Por exemplo, um usuário de um telefone pode ficar fora do alcance do WiFi e ser transferido para uma conexão 3G. O endereço IP mudaria, mas seria bom deixar o aplicativo Web continuar funcionando.
200_success
fonte
2

O uso do endereço IP como identificador geralmente não é recomendado, pois não é para isso que o endereço IP se destina - funcionalmente, é um endereço simples para roteamento de a para b e não diz nada sobre o que está antes de a ou depois de b.

Por exemplo, o mesmo endereço IP pode ser compartilhado por vários dispositivos natted, sendo os casos mais comuns

a) um provedor que atribua dinamicamente um pool de endereços a seus clientes, o que é bastante comum ao comprar a mesma quantidade de endereços públicos que você pode atender a mais clientes (você precisa de endereços suficientes para usuários simultâneos, não para usuários totais)

b) uma rede privada acessando a web a partir de um único endereço, redirecionando internamente pacotes para centenas ou milhares se as máquinas

Dados9
fonte
1

Além disso, dois computadores podem estar protegidos por um NAT e ter o mesmo endereço IP, seu conceito de cliente precisa estar correto.

O cliente NÃO é o computador com o qual você está se comunicando, mas o navegador em execução no computador.

Seu navegador não se importa muito com o endereço IP que seu computador possui, seu sistema operacional. E é por isso que você não pode confiar em endereços IP. O navegador se preocupa com os cookies e eles estão sob o controle do navegador. É por isso que você usa cookies para sessões.

Pieter B
fonte