2 votes

Si je bloque des utilisateurs avec une adresse IP vide, est-ce que cela affectera les utilisateurs innocents et non techniques?

Je gère un site web avec une fonction de commentaires anonymes. Les utilisateurs peuvent signaler des abus les uns aux autres ; les signalements sont liés à une adresse IP (obtenue via PHP à partir de $_SERVER['REMOTE_ADDR']).

J'ai remarqué que 99% des signalements sont pour une IP vide.

Je pense afficher un message disant "Une adresse IP est requise pour commenter" et interdire les IPs vides.

Pour une personne bien renseignée sur l'informatique qui n'a pas de mauvaises intentions mais qui veut simplement préserver sa vie privée, je ne suis pas trop inquiet. Ils peuvent décider eux-mêmes s'ils accordent plus d'importance à la vie privée ou à la capacité de commenter.

Ce qui me préoccupe, c'est de bloquer un utilisateur non technique et non malveillant qui ne réalise pas qu'il n'a pas d'adresse IP, et qui est donc confus lorsqu'il ne peut pas commenter. Y a-t-il un scénario dans lequel cela pourrait se produire ?

16voto

TheCompWiz Points 7329

Règle n° 1 des réseaux basés sur IP. Tout le monde qui communique sur celui-ci a une IP. Vous pouvez la masquer à travers un tiers, mais vous avez toujours une IP publique. Il n'y a pas d'exceptions. Internet est un réseau basé sur IP. Je soupçonne que vous avez une mauvaise logique dans votre code quelque part.

9voto

zackrspv Points 191

Il est également possible que ces variables ne renvoient tout simplement pas les résultats attendus et qu'elles soient donc vides. Vous pourriez essayer quelque chose comme ceci:

 if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
   if ($_SERVER["HTTP_CLIENT_IP"]) {
    $proxy = $_SERVER["HTTP_CLIENT_IP"];
  } else {
    $proxy = $_SERVER["REMOTE_ADDR"];
  }
  $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
  if ($_SERVER["HTTP_CLIENT_IP"]) {
    $ip = $_SERVER["HTTP_CLIENT_IP"];
  } else {
    $ip = $_SERVER["REMOTE_ADDR"];
  }
}

echo "Votre IP est $ip\n";
if (isset($proxy)) {
  echo "Votre IP de proxy est $proxy\n";
}

Comme on peut le constater dans la page du manuel PHP sur: http://www.php.net/manual/en/language.variables.predefined.php#31724

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X