[PHP] HTTP_X_FORWARDED_FOR tijdens SSL

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb een nieuwe site draaien waarop gebruikers kunnen inloggen mbv een SSL verbinding.

Nu wil ik bij een aantal acties het IP adres van de gebruiker kunnen loggen. Dit wil me tijdens een SSL verbinding niet echt lukken, want dan is getenv("HTTP_X_FORWARDED_FOR") niet beschikbaar. (Althans, niet bij mij...)

getenv("REMOTE_ADDR") is wel beschikbaar, maar dan is het IP adres weer niet betrouwbaar...

Een mogelijke oplossing is om een (irritante) opstartpagina te maken (zonder SSL) waarop een link staat met 'klik hier...' . Dan valt het IP-adres daar op te halen en ergens in de sessie op te slaan. Ik heb alleen een bloedhekel aan dat soort startpagina's, dus wil er alles aan doen om dat te voorkomen.

Zijn er mensen die hier ervaring mee hebben en dit op een handigere manier hebben opgelost?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

Je hoeft toch geen "klik hier" pagina te hebben.. je kan toch zelf redirecten.. merkt de gebruiker niks van :)

Acties:
  • 0 Henk 'm!

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 29-05 15:34

RRX

@life-

HTTP_X_FORWARDED_FOR is toch zowiezo niet altijd beschikbaar? alleen als mensen een proxyserver gebruiken die dat doorstuurd?

mijn T.net systeemspecspagina


Acties:
  • 0 Henk 'm!

Verwijderd

Dichterbij dan zoiets als dit kan volgens mij niet:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if($HTTP_X_FORWARDED_FOR)
  {
   $ip = $HTTP_X_FORWARDED_FOR;
  }
  elseif($HTTP_VIA)
  {
   $ip = $HTTP_VIA;
  }
  elseif($REMOTE_ADDR)
  {
   $ip = $REMOTE_ADDR;
  }
  else
  {
   $ip = "unknown";
  }
  echo $ip;
?>


Als je gaat klooien met Javascript krijg je in mijn geval 10.10.10.x. M'n interne IP nummer dus. Daar heb je dan ook niks aan.
Het kan ook zijn dat $HTTP_X_FORWARDED_FOR en $HTTP_VIA 2 IP adressen doorgeven. De eerste is dan de user en de tweede de proxy zelf. Gescheiden door een komma.
Dit werkt weer niet bij anonymizer -achtige proxies. Die geven dan weer 1 IP nummer door en die is van de proxy zelf.

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

De beschikbaarheid van HTTP_X_FORWARDED_FOR hangt af van de wil of onwil van de client of zijn proxy om het mee te sturen.
Je kunt er dus ook nooit op vertrouwen.

Zo'n scriptje als hierboven genoemd is dus vaak ook een security risico.
Ik surf van thuis standaard met 127.0.0.1 in HTTP_X_FORWARDED_FOR ingevuld.
Waarschijnlijk staat dan bij vele sites als mijn IP geregistreerd >:)

Who is John Galt?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 07 January 2003 @ 01:52:
Dichterbij dan zoiets als dit kan volgens mij niet:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if($HTTP_X_FORWARDED_FOR)
  {
   $ip = $HTTP_X_FORWARDED_FOR;
  }
  elseif($HTTP_VIA)
  {
   $ip = $HTTP_VIA;
  }
  elseif($REMOTE_ADDR)
  {
   $ip = $REMOTE_ADDR;
  }
  else
  {
   $ip = "unknown";
  }
  echo $ip;
?>


Als je gaat klooien met Javascript krijg je in mijn geval 10.10.10.x. M'n interne IP nummer dus. Daar heb je dan ook niks aan.
Het kan ook zijn dat $HTTP_X_FORWARDED_FOR en $HTTP_VIA 2 IP adressen doorgeven. De eerste is dan de user en de tweede de proxy zelf. Gescheiden door een komma.
Dit werkt weer niet bij anonymizer -achtige proxies. Die geven dan weer 1 IP nummer door en die is van de proxy zelf.
Bovenstaande scriptje werkt inderdaad wel, maar het probleem ervan is dat $HTTP_X_FORWARDED_FOR en $HTTP_VIA tijdens een https verbinding leeg zijn.

$REMOTE_ADDR kan dan het IP adres bevatten. Maar zelf merk ik heel vaak dat ik hier dan op m'n werk het IP van de xs4all prxy krijg. En om die te loggen heeft niet heel veel zin :)

Een redirect is dan denk ik de enige optie (alhoewel ik dan natuurlijk ook geen 100% zekerheid heb over het IP)
Pagina: 1