Attention à l’adresse IP d’un visiteur

Amis webmasters / éditeurs de sites Internet, je suis persuadé que vous récupérez à un moment ou à un autre l’adresse IP du visiteur (à des fins légales entre autre, en cas de soucis avec un membre ou du contenu). Mais comment faites vous ? Dans le site dont je m’occupe, nous avons une routine pour cela. Nous ne l’avions pas codé, et je ne m’y étais jamais interessé de près. Il a fallu un petit évènement pour que je relise le code attentivement.

Nous avons eu un membre « bizarre » sur le site. Quel ne fut pas ma surprise en voyant l’adresse IP enregistrée par le système : 10.0.1.2. Comment avait pu faire ce visiteur pour « communiquer » cette adresse IP ? Normalement impossible. Un coup d’oeil rapide à la fonction utilisée m’a permis de comprendre tout de suite : /// if (isset($_SERVER[‘X_FORWARDED_FOR’])) { $ip = $_SERVER[‘X_FORWARED_FOR’]; } else $ip = $_SERVER[‘REMOTE_ADDR’]; /// Le code part d’un bon sentiment : si on a affaire à un proxy, et qu’on a un header donnant l’adresse réelle, alors on enregistre cette dernière. Sauf que ce header est falsifiable très facilement. J’aurais aussi bien pu mettre une IP du FBI dedans, ou du texte. Seul REMOTE_ADDR peut être considéré comme sûr. La solution miracle n’existe pas. Depuis ce moment, j’enregistre donc les deux champs. [UPDATE] J’en profite pour préciser sur le même sujet : ne stockez pas/plus d’adresses IP dans un champ numérique SQL avec ip2long(). Cette fonction ne marche pas avec les adresses IP en ipv6, et cela va devenir de plus en plus courant.

Une réflexion sur « Attention à l’adresse IP d’un visiteur »

  1. Il convient de préciser également que X-Forwarded-For peut dans certains cas être une liste d’adresses IP, séparées par des espaces si mes souvenirs sont bons.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *