Necesito obtener la dirección IP usando nodejs/express. A continuación se muestra la declaración que uso para esto.
const ipAddress = String(req.ip || "unknown");Dado que req.ip se origina en un encabezado HTTP, un usuario malintencionado podría cambiarlo. ¿Es esta entonces la mejor manera de obtener la dirección IP del usuario?
Supongo que cuán "seguro" es depende de lo que está tratando de proteger.
En general, una IP debe considerarse transitoria: los usuarios en dispositivos móviles pueden ingresar o salir de wifi o diferentes torres de telefonía celular, y su IP puede cambiar. Las direcciones IP también se pueden falsificar.
Si está utilizando Express, req.ip normalmente NO proviene de un encabezado sino de la conexión misma . La excepción es si está utilizando un proxy inverso, ¿verdad? En cuyo caso, necesitaremos más detalles sobre el proxy que se utiliza y la configuración de su proxy. Los proxies deben configurarse para sobrescribir siempre el X-Forwarded-For enviado por el cliente, de modo que siempre se pueda confiar en el encabezado.
Aquí está el código que cambié el anterior a:
let ipAddress = ""; if (req.ip === undefined) ipAddress = "unknown"; else ipAddress = String(req.ip);