Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Rôzne druhy IP v PHP

Viete mi prosím vysvetliť, kedy ktorý parameter obsahuje IP a aká IP to je? Potešil by aj nejaký príklad.

$IP1 = getenv('HTTP_CLIENT_IP'); 
$IP2 = getenv('HTTP_X_FORWARDED_FOR'); 
$IP3 = getenv('HTTP_X_FORWARDED'); 
$IP4 = getenv('HTTP_FORWARDED_FOR'); 
$IP5 = getenv('HTTP_FORWARDED'); 
$IP6 = $_SERVER['REMOTE_ADDR']; 
Předmět Autor Datum
$_SERVER['REMOTE_ADDR'] je IP adresa, z ktorej došla požiadavka. Ostatné sú z hlavičky HTTP požiada…
los 23.10.2008 13:27
los
Ten kto chce IP podvrhnúť, tak vie podvrhnúť aj "hlavnú" IP. Mne ide o to, že väčšina používateľov p…
msx. 23.10.2008 13:38
msx.
Vždyť ti los odpověděl. REMOTE_ADDR bude vždycky obsahovat adresu počítače, routeru nebo proxy, ze k…
Vladimir 23.10.2008 14:00
Vladimir
Čiže je úplne jedno, v ktorom parametri ($IP1 - $IP5) to bude? Vždy to bude len v jedinom? Význam $…
msx. 23.10.2008 14:47
msx.
Čiže môže byť nastavená hociktorá hodnota nezávisle na iných hodnotách. V HTTP hlavičke je napr. For… poslední
los 23.10.2008 16:28
los

$_SERVER['REMOTE_ADDR'] je IP adresa, z ktorej došla požiadavka.

Ostatné sú z hlavičky HTTP požiadavky, takže ich klient môže jednoducho podvrhnúť. Pridávajú ich proxy servery a dávajú do nich IP adresu, odkiaľ prišla požiadavka na ten proxy server.

Ten kto chce IP podvrhnúť, tak vie podvrhnúť aj "hlavnú" IP. Mne ide o to, že väčšina používateľov podvrhovať nebude a mnoho používateľov ani nevie, že mnohé stránky logujú všetko. Takže malý prehľad o IP neuškodí.

Teraz sa vrátim k otázke. Vieš mi povedať, kedy, ktorý údaj bude obsahovať hodnotu? Ide o to, že ktoré sú pre mňa "podstatné" a ktoré nie.

Vždyť ti los odpověděl. REMOTE_ADDR bude vždycky obsahovat adresu počítače, routeru nebo proxy, ze kterého přišel požadavek. Proxy někdy přidávají do hlavičky i to, odkud přišel požadavek na proxy samotnou.

Když si zadáš HTTP_CLIENT_IP do google, na prvním odkazu máš zkušenosti v zprasené angličtině:

Hi,

When testing proxis I run into some strange results for $HTTP_X_FORWARDED_FOR like:

"unknown"
"82.77.40.217, 212.12.163.72"
"82.77.40.217[fallowed by an entire java script that I can't paste here because of the characters]"

Záleží tedy na proxy, co ti pošle, a jestli vůbec něco.

Čiže môže byť nastavená hociktorá hodnota nezávisle na iných hodnotách. V HTTP hlavičke je napr. Forwarded, to sa dá do $_SERVER["HTTP_FORWARDED"]. Niekto iný môže nastaviť hlavičku X-Forwarded, ku ktorej sa potom dostaneš cez $_SERVER["HTTP_X_FORWARDED"].

Napr. ak by šla požiadavka cez 2 proxy, tak jedna môže nastaviť jednu hlavičku a druhá druhú. Iné proxy môžu ukladať informáciu o IP napr. aj do hlavičky s úplne iným menom.

Zpět do poradny Odpovědět na původní otázku Nahoru