2012-02-10 30 views
7

Si incluyo estos dos en una base de datos, ¿es suficiente para evitar que un visitante del sitio suplante que provienen de una dirección IP diferente?Prevención de suplantación de IP

$ip1 = $_SERVER['HTTP_X_FORWARDED_FOR']; 
$ip2 = $_SERVER['REMOTE_ADDR']; 
+3

¿Qué quieres decir con _spoofing_? '$ _SERVER ['REMOTE_ADDR']' le mostrará la dirección IP del punto extremo remoto, que es difícil de falsificar en el medio de una conexión, pero más fácil de falsificar cerca de cualquier punto final de la conexión, pero el programa ese host podría estar personificando maliciosamente a uno de tus usuarios. ¿Qué estás realmente tratando de medir o prevenir? – sarnold

+2

@sarnold Quiero permitir una acción solo una vez cada 5 minutos desde una dirección IP determinada. La idea es que una persona solo pueda hacer la acción una vez cada 5 minutos, en lugar de hacer clic sin parar cientos de veces por minuto. – John

Respuesta

3

Respuesta corta - no. Nunca puede garantizar un enlace entre un IP y una persona. Para casi todos los propósitos prácticos, sí, eso es suficiente.

A menos que realmente esté esperando que alguien haga todo lo posible para ocultar su IP, debería estar bien.

Realmente depende de lo que intente hacer si es lo suficientemente bueno o no.

Editar: Acabo de ver tu comentario en la primera publicación. Una opción para eso es mirar Evercookies - son extremadamente invasivos y poco éticos, pero hacen un muy buen trabajo, por lo que es su decisión.

+0

ooh, evercookies se ven geniales, +1 a ti – Cyclone

+0

Como dije, poco ético como el infierno, pero definitivamente genial. Me pregunto qué pensaría la gente de SOPA de ellos: P – Joe

+0

Nunca lo usaría personalmente, pero sí, eso es realmente genial. No creo que me haya dado cuenta de cuántas maneras se puede almacenar una información identificable en la computadora de un usuario hasta ahora. – Cyclone

1

No, es muy fácil suplantar X-FORWARDED-FOR, que se envía literalmente como encabezado. Intente crear un sistema de cuenta o haga que confíe en el correo electrónico o algo así. No puedes confiar solo en IP.

Dado su comentario anterior, $_SERVER['REMOTE_ADDR'] probablemente sea suficiente, ya que tendrían que cambiar las direcciones IP cada vez que quisieran realizar esa acción, lo que implicaría un proxy o Tor.

0

No, solo puede evitar el uso de algunos servidores proxy.

todavía hay opciones que le permite "esconder" su IP real (y mucha gente le gusta que la privacidad), tales como:

registro de IP que ayuda simplemente de nuevo algún tipo de usuarios de todos modos (y muchos de ellos utiliza ips dinámicas de su proporciona piscinas, así que sin orden judicial que nunca se sabe quién es ese y prohibir mucha gente con él/ella) pero contra admin con 150 máquinas disponibles ...

0

Cuando un usuario visita su sitio con un servidor proxy, en ese caso ambos valores son diferentes. Puede obtener la dirección IP usando la variable del servidor HTTP_X_FORWARDED_FOR. Así que en ese caso ' HTTP_X_FORWARDED_FOR 'fue publicado por el servidor proxy, que describe la IP del cliente, mientras que' REMOTE_ADDR 'describe la IP del servidor proxy.

Cuando un usuario visita su sitio sin ningún servidor proxy, en ese caso puede obtener la dirección IP utilizando la variable de servidor REMOTE_ADDR. Entonces, en ese caso, HTTP_X_FORWARDED_FOR y HTTP_VIA no estarán disponibles.

1

HTTP_X_FORWARDED_FOR es un encabezado HTTP, por lo que se puede falsificar fácilmente. REMOTE_ADDR es una variable de entorno proporcionada por el servidor web como se especifica en la especificación CGI. No puede ser fácilmente falsificado. Así que no hay ningún punto real en el almacenamiento en caché de cualquiera de los dos.

Si alguien está falsificando el encabezado HTTP_X_FORWARDED_FOR usando un servidor proxy comprometido, entonces no hay mucho que pueda hacer al respecto.

Sin embargo, debería ser más fácil confiar en que una solicitud no procesada no se falsifica, ya que, a menos que el atacante esté en la misma subred, están limitados a un ataque de suplantación ciega, lo que les obliga a adivinar la secuencia y reconocer los números de la conexión TCP. Esto es muy difícil de hacer en redes modernas. E incluso si logran hacer esto, no podrán recibir datos enrutados a la IP falsificada, por lo que sería fácil filtrar cualquier ataque de suplantación a ciegas.

En estos días, no es posible (vale, nada es imposible, pero sí requiere circunstancias muy específicas y tiene aplicaciones limitadas) para que alguien realmente use una IP falsificada para hacer una conexión TCP anónima a un servidor web. En la mayoría de los casos, la suplantación de paquetes se usa para DDoS y ataques de inundación.