Pues el título básicamente lo dice.
Pero para más información. .
Este método funciona pero. .
$ip = '1.1.1.1'; curl_setopt($handle, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: $ip", "X_FORWARDED_FOR: $ip"));
Solo agrega estas dos keys
en la matriz $_SERVER
HTTP_REMOTE_ADDR
HTTP_X_FORWARDED_FOR
La clave REMOTE_ADDR
sigue siendo la misma.
¿ REMOTE_ADDR
puede cambiar REMOTE_ADDR
? La respuesta aquí dice NO . Pero un comentario también dice que puede, sin embargo, NO ser la dirección IP real del usuario porque puede estar oculta por proxies y otros métodos. Es por eso que la regla general es no depender de $_SERVER['REMOTE_ADDR']
para una característica de seguridad.
Con todo eso a un lado, ¿hay un método php curl para ocultar / enmascarar / cambiar la ip? (Cualquier otro método php aparte del código anterior haría).
Y
¿Hay una manera de contrarrestar el método O hay una manera de obtener la IP REAL REAL de un usuario?
¡Aclamaciones!
No. $_SERVER['REMOTE_ADDR']
es la dirección IP física real que el cliente usó para conectarse al servidor web, según lo confirmó un protocolo de enlace TCP de tres vías. No hay forma de falsificar esto configurando encabezados HTTP simples. Tampoco puede hacer que el servidor web / PHP sobrescriba este valor con otra cosa de ninguna manera. $_SERVER['REMOTE_ADDR']
se establece a partir de la información de la conexión TCP, punto.
Para falsificar realmente una dirección IP, tiene que ir mucho más profundo en la capa de red real y tener cierto nivel de control sobre el equipo de red en las posiciones intermedias / proxies / lo que sea para poder establecer una conexión TCP desde una dirección IP Aparte de la que lo está estableciendo.
¿Hay una manera de contrarrestar el método O hay una manera de obtener la IP REAL REAL de un usuario?
No. “La dirección IP real del usuario” es la dirección desde la cual su servidor web recibió la conexión, punto. No hay otra dirección para ti. El cliente se conecta a su servidor desde una determinada IP, esto se confirma con un protocolo de enlace TCP de tres vías, esa es la única dirección que conoce para este cliente. Este cliente puede ser un proxy o un enrutador NAT (es decir, un proxy) o alguna otra cosa, simplemente no lo sabe y tampoco debería hacer ninguna diferencia para usted.
Si el cliente utiliza un navegador detrás de un proxy, $_SERVER['REMOTE_ADDR']
será la dirección IP del proxy. La dirección remota es la IP de la máquina que está haciendo la conexión.
Si el proxy usa encabezados para indicar si la conexión se realiza en nombre de otras máquinas, puede usar estos encabezados para determinar la IP del navegador detrás del proxy.
$_SERVER['HTTP_X_FORWARDED_FOR']
, $_SERVER['HTTP_X_FORWARDED']
, $_SERVER['HTTP_FORWARDED_FOR']
y $_SERVER['HTTP_FORWARDED']
Tenga en cuenta que el RFC 6648 ha dejado en desuso los encabezados X-*
y el RFC 7239 ha desaprobado X-Forwarded-*
al definir un encabezado Forwarded
.
Puedes consultar algunas respuestas en