$_SERVER['REMOTE_ADDR']
es la dirección IP a la que entró la conexión TCP. Si bien es técnicamente posible falsificar direcciones IP bidireccionales en Internet (al anunciar rutas ficticias a través de BGP), tales ataques probablemente sean detectados y no estén disponibles para el atacante típico; básicamente, su atacante debe tener control sobre un ISP o operador. No hay ataques de spoofing unidireccionales factibles contra TCP (todavía). Sin embargo, la suplantación de IP bidireccional es trivial en una LAN.
También tenga en cuenta que puede no ser un IPv4, sino una dirección IPv6. Su cheque actual está bien en ese sentido, pero si comprueba que 1.2.3.4
solo ocurre en cualquier parte dentro de $_SERVER['REMOTE_ADDR']
, un atacante podría simplemente conectarse desde 2001:1234:5678::1.2.3.4
.
En resumen, para cualquier otra cosa que no sean aplicaciones críticas (bancarias/militares/daños potenciales> 50,000 €), puede usar la dirección IP remota si puede excluir atacantes en su red local.
Agregando a las respuestas existentes, siempre será la dirección IP que realizó la solicitud a su servidor, pero eso no significa que sea la dirección IP de la computadora que inició la solicitud. Cualquier número de servidores proxy podría estar entre usted y el usuario final, y el más cercano a usted es la dirección IP que obtiene. –
sí, es seguro porque no puede ser sustituido por otros trucos o trampas. pero asegúrese de agregar más control para la variable $ grant_all_admin_rights. –
Cualquier variable $ _SERVER puede ser falsificada, p. curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ("REMOTE_ADDR: $ ip", "HTTP_X_FORWARDED_FOR: $ ip")); Por lo tanto, depende completamente del contexto: si el atacante espera una respuesta, volverá a $ ip. Si no les importa la respuesta, ciertamente pueden falsificar el encabezado. Si su código después de la comprobación del encabezado en su lugar dijo: "open_the_door_to_badguys();" tendrías un problema – TMG