Ich hab ein Problem mit phpbb...
Wenn ein Nutzer in phpbb ohne Cookies surft, wird die Session-ID als GET-Parameter durchgereicht. Wenn solch ein Nutzer jetzt auf einen Link klickt, der auf eine andere Seite führt, kann auf dem anderen Server über den HTTP-REFERRER die SID ausgelesen werden.
Das Problem ist so alt wie die SIDs und in phpbb schützt man sich vor der Übernahme von Sessions, indem man eine Session an eine bestimmte IP bindet.
Aber in meinem Fall nützt das nichts, weil die meisten Nutzer meines Boards den gleichen Proxyserver nutzen und deshalb auch von phpbb mit der selben IP erkannt werden. Deshalb können diese Nutzer relativ einfach die Session übernehmen.
Der betreffende Proxy liefert HTTP_X_FORWARDED_FOR, aber phpbb erkennt trotzdem nur die IP-Adresse des Proxies in den Sessions.
Wenn er da irgendwie die interne IP mit verwenden würde, wäre mein Problem schon viel kleiner...
In der common.php gibt es folgenden Code:
PHP-Code:
if( getenv('HTTP_X_FORWARDED_FOR') != '' )
{
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );
$entries = explode(',', getenv('HTTP_X_FORWARDED_FOR'));
reset($entries);
while (list(, $entry) = each($entries))
{
$entry = trim($entry);
if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
{
$private_ip = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/', '/^10\..*/', '/^224\..*/', '/^240\..*/');//versteh ich nicht
$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
if ($client_ip != $found_ip)
{
$client_ip = $found_ip;
break;
}
}
}
}
Irgendwas wird hier mit der LAN-internen IP-Adresse gemacht. Den Abschnitt mit dem replace verstehe ich aber nicht und kann deshalb nicht sagen, war um das nicht greift oder was hier eigentlich passieren sollte...
Kann mir da jemand helfen?