O endereço IP de uma solicitação HTTP pode ser falsificado?

23

Em um site que estou criando, planejo registrar os endereços IP das submissões, caso seja necessário. Eu não me importo com os proxies, mas enganar o seu endereço IP poderia frustrar o propósito.

Para executar uma ação GET completa (independentemente de você receber ou passar ou não), é necessário um endereço IP legítimo? Ou um site ser spam com mensagens de endereços IP falsificados aleatórios?

(O POST é diferente?)

    
por TND 20.04.2012 / 04:48

4 respostas

30

Não. Bem, sim. Ou talvez. Depende de onde você está obtendo seus dados de "endereço IP" e se confia neles.

Se você está pegando o endereço dos próprios pacotes IP, então pode confiar que quem enviou os pacotes tem acesso aos pacotes enviados para aquele endereço IP. Isso pode significar que é um usuário legítimo desse endereço IP (para valores apropriadamente limitados da palavra "legítimo", nesta era de botnets, proxies abertos e Tor), ou que quem enviou os pacotes tem acesso a um sistema intermediário e pode ver os pacotes que você está enviando ao passarem.

No entanto, com a ampla prevalência de proxies reversos, o pacote IP pode muitas vezes deturpar a origem da conexão e, portanto, vários cabeçalhos HTTP foram introduzidos para permitir que o endereço IP de origem "real" seja fornecido pelo proxy. O problema aqui é que você tem que confiar em quem está enviando o cabeçalho para fornecer informações precisas. Além disso, as configurações padrão (ou mal orientadas da cópia) podem deixá-lo facilmente aberto para falsificação desses cabeçalhos. Portanto, você precisa identificar se quaisquer proxies reversos estão legitimamente envolvidos em suas solicitações e garantir que eles (e seu servidor da Web) estejam adequadamente configurados e protegidos.

    
por 20.04.2012 / 04:56
21

Não.

As conexões TCP (que o HTTP usa) exigem comunicação bidirecional. Embora você possa falsificar facilmente o IP de origem de um pacote SYN , a resposta SYN-ACK do servidor será roteada para o IP falsificado no pacote inicial - você não conseguirá concluir a conexão, a menos que possa ver a resposta do servidor.

No entanto, ferramentas de proxy anônimas como o Tor podem fornecer um meio de anonimizar facilmente a origem de uma conexão - lembre-se de que isso pode impedir que o controle de spam por IP seja banido facilmente.

    
por 20.04.2012 / 04:53
12

Resposta curta .. hoje você não pode.

No passado, os computadores eram muito previsíveis nos números de sequência do tráfego TCP. Isso significa que um invasor enviaria tráfego legítimo até descobrir os números de sequência e poderia adivinhar o que viria a seguir. Em seguida, ele enviaria o tráfego TCP para imitar um endereço IP falsificado e o host do outro lado acreditaria. Então você pode fingir o handshake de três vias .

Hoje e eu diria que há mais de 10 anos. Os computadores são muito melhores em randomizar isso, então é muito difícil, se não impossível. Seria uma perda de tempo, na minha opinião, para um atacante fazer isso.

    
por 20.04.2012 / 04:54
7

O HTTP é executado por TCP. Para que o TCP funcione, você precisa do handshake SYN / ACK completo de três vias antes de chegar longe o suficiente para emitir uma solicitação GET ou POST, portanto, uma simples fonte falsificada não fará muito. Outras formas mais avançadas de spoofing (MitM) ainda seriam eficazes.

    
por 20.04.2012 / 04:53