On Mon, 15 Dec 2003 21:06:29 +0100, Leonard <nospam@invalid.invalid>
wrote:
>>"X-Forwarded-For"-headers, der fx indeholder
>>"10.15.4.14, 10.15.4.19, 213.237.11.129" - så tages kun den første
>>IP-adresse.
>OK, er det så altid den første adresse der viser den reelle bruger?
Puha... :)
Altså, under normale omstændigheder, ja. Men som i ovenstående
tilfælde, så er "10.15.4.14" en lokalnet-adresse, fordi der bruges en
proxy imellem. Spørgsmålet er, hvad man (dvs. Søren i det her
tilfælde) er interesseret i at vise.
Jeg synes ikke, det giver mening, at man i nogle tilfælde fortæller
folk deres lokalnet-adresse (hvis de bruger en proxy mellem
lokalnettet og Internet), og i andre tilfælde giver folk deres
eksterne adresse (selvom de sidder på lokalnet). Dertil kommer så, at
lokalnet-adressen også blot kan være en gateway for et andet NAT'et
netværk, og så har man hverken den korrekte LAN- eller WAN.adresse.
Dertil kommer, at den klient, der forbinder til dig, i princippet kan
fyre hvad som helst tilbage til dig i "X-Forwarded-For"-headeren. Skal
du logge noget, så giver det aldrig mening kun at logge
"X-Forwarded-For". Den eneste data, du ret sikkert kan stole på, er
remote-adressen (REMOTE_ADDR) - der så måske rigtigt nok bare er en
proxy. Men det er i al fald den eneste klient, som webserveren
kommunikerer med.
Et eksempel:
http://ip.ter.dk/ antager, at folk bruger siden, fordi de
er interesseret i at finde ud af, hvad deres eksterne IP-adresse
sandsynligvis er. Siden antager, at folk ikke fake'r headers, idet det
er et værktøj til folk selv (folk skal da være velkomne til at snyde,
men det svarer lidt at sende en e-mail til sig selv med forfalsket
adresse :). Siden tjekker så X-Forwarded-For, finder den første
ikke-RFC1918-adresse i listen, og (hvis der findes en sådan) viser den
i stedet for REMOTE_ADDR - dvs. "213.237.11.129" i det citerede
eksempel. Det er en del af designet. Siden er ikke beregnet til at
skræmme folk eller på anden måde prøve at lure noget om brugeren.
--
- Peter Brodersen
Ugens sprogtip: jamen (og ikke jammen)