web services - Implicaciones de seguridad de Request.ServerVariables("REMOTE_ADDR") frente a Request.ServerVariables("HTTP_X_FORWARDED_FOR")
web-services security (2)
Si los usuarios utilizan un proxy transparente, el código anterior obtendrá la dirección IP real. Sin embargo, si están usando un proxy anónimo (como Anonymizer), no hay forma de que los usuarios obtengan la dirección IP real.
Digamos que estamos rastreando la IP del usuario final para un servicio web:
ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If ip = "" Then
ip = Request.ServerVariables("REMOTE_ADDR")
End If
He leído que este es el mejor método para recuperar IP de usuario final porque funciona incluso para usuarios con un proxy transparente.
Si utilizamos la dirección IP del usuario final para filtrar usuarios malintencionados, ¿hay alguna implicancia de seguridad con el método anterior en lugar de, digamos, simplemente usar Request.ServerVariables ("REMOTE_ADDR")?
Por ejemplo, si prohibimos a un usuario malicioso por IP de usuario final, ¿podrían cambiar fácilmente su IP a través de un proxy y continuar usando nuestro servicio web?
Gracias de antemano por tu ayuda.
REMOTE_ADDR
es generado por el servidor web en función de la conexión del cliente. HTTP_X_FORWARDED_FOR
se basa en un encabezado HTTP enviado por el cliente.
No puede confiar en la entrada del cliente, particularmente en la entrada que es fácil de falsificar, como los encabezados HTTP. Los clientes pueden pegar algo en ese encabezado HTTP_X_FORWARDED_FOR
.