Rune Jensen
unread,Sep 8, 2012, 6:54:07 AM9/8/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Man kan åbenbart bruge en ikke-dokumenteret feature til at hente
informationer om IPen bag en proxy. Den hedder HTTP_X_FORWARDED_FOR,
og gemmer den IP, som taler med en proxy (hvor proxiens IP vil ligge i
REMOTE_ADDR, hvis det er).
Da X_FORWARDED_FOR er en variabel, som kan ændres af brugeren, og da
den iøvrigt er op til proxien at sætte også, er den ikke pålidelig på
samme måde.
Men jeg er også mere interesseret i, bare at få en værdi, som er den
samme for den samme bruger, og som ikke er lig med REMOTE_ADDR, hvis
brugeren er bag en proxy.
Så jeg lavede følgende udfra oplysninger på nettet:
Function RetrieveIP
IP_REQUEST = Request.Servervariables("REMOTE_ADDR")
FORWARDED_FOR = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If FORWARDED_FOR = "" Then
RetrieveIP = IP_REQUEST
Else
RetrieveIP = FORWARDED_FOR
If inStr( RetrieveIP,",")>0 Then
RetrieveIP = Split( RetrieveIP,",")(0)
End If
End If
End Function
Nu skal det testes, selvfølgelig, men er der en mere optimal måde at
gøre det på?
Og der KAN forekomme kommaseparerede IPer i FORWARDED_FOR (så vidt jeg
forstår), hvis nu det er en legal proxy, som følger forskrifterne om
at oplyse om oprindelig IP i FORWARDED, er det så korrekt, at vælge
den første IP i arrayet?
PS: Opera oplyser oprindelig IP i X_FORWARDED_FOR, så det er altså
ikke verdens bedste anonyme proxy :)
MVH
Rune Jensen