2012-06-08 2 views
1

Deux questions.Trouver l'adresse IP réelle

Tout d'abord, lorsque j'essaie de répercuter l'adresse Ip dans un champ de saisie masqué, mon formulaire cesse d'être envoyé. J'ai jquery pour valider certaines entrées et tout s'arrête quand l'adresse IP est présente dans ce champ.

Deuxièmement, l'adresse IP que je reçois n'est pas celle que je trouve lorsque je vérifie le terminal. Pourquoi mon site, hébergé par Godaddy, montre-t-il ce qui ressemble à un ip de proxy et non à ma machine ip?

Voici le code que j'utilise.

function ipCheck() { 
    if (getenv('HTTP_CLIENT_IP')) { 
     $ip = getenv('HTTP_CLIENT_IP'); 
    } 
    elseif (getenv('HTTP_X_FORWARDED_FOR')) { 
     $ip = getenv('HTTP_X_FORWARDED_FOR'); 
    } 
    elseif (getenv('HTTP_X_FORWARDED')) { 
     $ip = getenv('HTTP_X_FORWARDED'); 
    } 
    elseif (getenv('HTTP_FORWARDED_FOR')) { 
     $ip = getenv('HTTP_FORWARDED_FOR'); 
    } 
    elseif (getenv('HTTP_FORWARDED')) { 
     $ip = getenv('HTTP_FORWARDED'); 
    } 
    else { 
     $ip = $_SERVER['REMOTE_ADDR']; 
    } 
    //$ip = str_replace('.','', $ip); 
    return $ip; 
} 
+0

Parce que vous êtes derrière un proxy? Parce que votre passerelle utilise NAT? –

+0

Et nous pourrions avoir besoin d'un peu plus d'informations pour répondre à la première question. Comme, le code HTML du champ dans lequel se trouve l'adresse IP, comment elle est remplie et comment elle est validée. – andrewsi

+0

IP sur votre machine dans le réseau local ne correspond pas à l'adresse IP de votre routeur (qui est utilisé lorsque vous naviguez sur Internet), mon ami. –

Répondre

2

Votre code permet à n'importe quel appelant de spécifier l'adresse IP de son choix (alias IP spoofing).

Tout ce que l'attaquant doit faire est de faire des requêtes avec un en-tête HTTP ajouté tel que X-Forwarded-For: 123.123.123.123.

Ce code diminue votre sécurité, au point que je puisse prétendre être localhost (127.0.0.1) ou "Santa Clause", car ces valeurs ne sont pas validées pour contenir une adresse IP réelle.

Notez également que, par exemple, l'en-tête HTTP X-Forwarded-For peut contenir plusieurs adresses IP, pas seulement une (séparées par une virgule).

$_SERVER['REMOTE_ADDR'] est votre seule option.

+0

Merci. J'ai remarqué que mon IP est revenu comme celui assigné par Quest et pas celui que je vois dans ifconfig. Cela est dû au fait que mon adresse IP locale n'est pas l'adresse IP du routeur. Cela fonctionne pour bloquer les utilisateurs dans htacccess mais malheureusement, s'ils changent de routeurs, cela ne les arrêtera pas. Merci pour l'aide. Plus sécurisé, mieux c'est. –

+0

Utile Q/A à propos de '$ _SERVER ['REMOTE_ADDR']': http://stackoverflow.com/q/4773969/186636 –

Questions connexes