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.
¿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
@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