Il miglior approccio per ottenere l'IP dell'utente

0

Ci sono due approcci:

Primo approccio:

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  |
+----+----------------+-------------+

Secondo approccio:

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  |
+----+----------------+----------------+-------------+

Finora, stavo usando il primo approccio, ma un utente può semplicemente impostare un valore fasullo su uno di quegli header HTTP_... e in tal caso memorizzerò un valore errato come IP dell'utente. Ma nel secondo approccio, memorizzerò entrambi REMOTE_ADDR e uno di quei HTTP_... headers (quello che non è vuoto) ., Come sai che nessuno può cambiare il valore di REMOTE_ADDR , quindi suppongo che il secondo approccio sarà molto meglio.

Quindi pensi qual è il migliore?

    
posta Martin AJ 10.07.2016 - 00:12
fonte

1 risposta

1

Il secondo è decisamente migliore rispetto al primo. Ma ..... non so che tipo di utenti hai a che fare perché per l'utente medio del computer, più persone sono a conoscenza di VPN e programma per nascondere la propria identità più che essere in grado di cambiare le intestazioni.

A mio parere, penso che le intestazioni potrebbero essere più affidabili perché per l'utente medio è più semplice scaricare un programma VPN. Penso che archiviare entrambi sia meglio che non se hai davvero bisogno di conoscere l'IP.

Inoltre, tieni presente che sia l'intestazione che il telecomando non possono essere autenticati se l'utente sa cosa sta facendo fino a nascondere la propria identità.

Ci sono molte più informazioni che puoi raccogliere sull'utente per identificarle, ma come ho detto tutto dipende da chi sono i tuoi utenti e cosa stai cercando di fare con quelle informazioni.

Solo alcune cose a cui pensare!

    
risposta data 10.07.2016 - 00:24
fonte

Leggi altre domande sui tag