El mejor enfoque para obtener la IP del usuario

0

Hay dos enfoques:

Primer enfoque:

if (isset($_SERVER['HTTP_CLIENT_IP']))
    $user_ip = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    $user_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
    $user_ip = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
    $user_ip = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
    $user_ip = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
    $user_ip = $_SERVER['REMOTE_ADDR'];
else
    $user_ip = NULL;

// IPs
+----+----------------+-------------+
| id |    user_ip     |  date_time  |
+----+----------------+-------------+
| 1  | 43.12.9.9      | 1468070172  |
| 2  | 173.3.0.1      | 1468070667  |
+----+----------------+-------------+

Segundo enfoque:

if (isset($_SERVER['HTTP_CLIENT_IP']))
    $header = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    $header = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
    $header = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
    $header = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
    $header = $_SERVER['HTTP_FORWARDED'];
else
    $header = NULL;

$user_ip = $_SERVER['REMOTE_ADDR'];

// IPs
+----+----------------+----------------+-------------+
| id |    user_ip     |     header     |  date_time  |
+----+----------------+----------------+-------------+
| 1  | 43.12.9.9      | NULL           | 1468070172  |
| 2  | 93.35.40.1     | 173.3.0.1      | 1468070667  |
+----+----------------+----------------+-------------+

Hasta ahora, estaba usando el primer enfoque, pero un usuario simplemente puede establecer un valor falso en uno de esos encabezados HTTP_... y, en ese caso, almacenaré un valor incorrecto como IP del usuario. Pero en el segundo enfoque, almacenaré REMOTE_ADDR y uno de esos HTTP_... headers (el que no está vacío) ., Como saben, nadie puede cambiar el valor de REMOTE_ADDR , así que supongo que el segundo enfoque será mucho mejor.

Entonces, ¿crees cuál es mejor?

    
pregunta Martin AJ 10.07.2016 - 00:12
fuente

1 respuesta

1

El segundo es definitivamente mejor que el primero. Pero ... no sé con qué tipo de usuarios está tratando, porque para el usuario promedio de computadoras, más personas conocen las VPN y los programas para ocultar su identidad más que poder cambiar de encabezados.

En mi opinión, creo que los encabezados podrían ser más confiables porque para el usuario promedio, es más fácil simplemente descargar un programa VPN. Creo que almacenar ambos es mejor que no si realmente necesitas conocer la IP.

También tenga en cuenta que tanto el encabezado como el control remoto no se pueden autenticar si el usuario sabe lo que está haciendo hasta el momento de ocultar su identidad.

Hay mucha más información que puede recopilar sobre el usuario para identificarlo, pero como dije, todo depende de quiénes sean sus usuarios y de lo que intenta hacer con esa información.

¡Solo algunas cosas para pensar!

    
respondido por el nd510 10.07.2016 - 00:24
fuente

Lea otras preguntas en las etiquetas