Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Comentariile sunt închise pentru IP-ul real al unui user cu proxy

Cand aveti un site aveti destule motive sa blocati accesul prin proxy. Majoritatea celor care folosesc proxy sunt fie spameri, fie hackeri care v-au pus gand rau, asa ca de multe ori e bine sa blocati accesul prin proxy sau, daca nu se poate, cel putin sa il logati.

OK, se pune problema “De unde stiu daca se foloseste proxy? Doar e proxy si ascunde IP-ul real.” Problema nu e chiar asa complicata cum se crede la prima vedere. Cand un utilizator foloseste un server proxy, serverul forwardeaza pachetele la destinatie alterate. Adica, pe langa pachetele primite mai trimite inca un header care din PHP poate fi citit.

Acest header e HTTP_X_FORWARDED_FOR si poate fi citit din variabila super-globala $_SERVER in care se pastreaza si variabila REMOTE_ADDR – IP-ul real.

Ca sa va dati seama daca userul foloseste proxy verificati continutul variabilei $_SERVER[‘HTTP_X_FORWARDED_FOR’]. Daca variabila contine un IP, atunci e un proxy care intermediaza totul si IP-ul continut e de fapt IP-ul real al vizitatorului. Un exemplu de utilizare aveti mai jos:

< ?php
$ip = $_SERVER['REMOTE_ADDR'];
$proxy = $_SERVER['HTTP_X_FORWARDED_FOR'])
if( ereg(’^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$’,$proxy )
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
?>

Exemplul e doar demonstrativ pentru ca are mici neajunsuri datorita carora poate fi furat. De exemplu, daca un utilizator e intr-un LAN mascat prin NAT si in NAT are un server proxy il poate folosi caz in care $_SERVER[‘HTTP_X_FORWARDED_FOR’] va avea valoarea adresei locale, adica un IP neroutabil care nu va ajuta cu nimic. Deci, ca sa puteti folosi concret aceasta functionalitate trebuie sa mai adaugati cateva linii de cod care verifica daca nu cumva IP-ul e neroutabil pentru a nu loga un IP care nu va ajuta cu nimic.

PHP

Comments are closed.