phpBB.de - Die deutsche phpBB-Community
Stand: 30.12.2008 04:56
aktuelle Version auf phpBB.de
 
Apache At Work Communities Community Building Informationen und Hinweise Installation/Konfiguration/Update MySQL PHP phpBB-Optimierungen phpBB3 Rechtliches Server & Technik Snippets Templates und Mods
 



Knowledge Base Offline -> At Work -> Was tun bei Fehlermeldung "Invalid Session"?

Was tun bei Fehlermeldung "Invalid Session"?
Autor: larsneo
Stand: 30.12.2008 04:56
Neuste Version unter: http://www.phpbb.de/doku/kb/invalid_session

Was tun bei Fehlermeldung "Invalid Session"?

Unter bestimmten Umständen erscheint im Forum die Fehlermeldung "Invalid Session" oder man wird ausgelogt. Dieser Artikel beschreibt, was der Fehler bedeutet und wie man ihn umgeht.
Das Problem liegt an der - vielleicht etwas zu sehr - verbesserten Sicherheit in phpBB2 / 2.0.4

Hinweis: Seit 2.0.6 Wird die Fehlermeldung nur noch beim Schreiben von Beiträgen angezeigt, auf anderen Seiten wird man stattdessen kommentarlos ausgelogt (und bei autologin direkt wieder eingelogt).

Als Antwort auf das zunehmende Session-Hijacking wurde in der aktuellen Version eine engere Bindung zwischen user-ip und user-session definiert - eine auf den ersten Blick recht nett anmutende Idee (bei Postnuke hatten wir das auch einmal) in der Realität treten aber ernsthafte Probleme auf:
die Benutzer-IP ist unter umständen während der Laufzeit der Session nicht eindeutig - sowohl durch Nutzung von Proxy-Farmen als auch vor allen dingen bei AOL Benutzern kann die IP-Adresse von Anfrage zu Anfrage anders sein (und muss dabei noch nicht einmal aus einer Subnetzklasse stammen, bei AOL können es gar unterschiedliche Class-A-Netze sein...)

Was kann man dagegen tun:
In erster Linie versuchen die neuen Sicherheitsrichtlinien wieder etwas runterzuschrauben.
Der entsprechende Check findet sich in der /includes/session.php:
Code:
         // Do not check IP assuming equivalence, if IPv4 we'll check only first 24
         // bits ... I've been told (by vHiker) this should alleviate problems with
         // load balanced et al proxies while retaining some reliance on IP security.
         //
         $ip_check_s = substr($userdata['session_ip'], 0, 6);
         $ip_check_u = substr($user_ip, 0, 6);

An dieser Stelle kann man versuchen, den IP-Check abzuschwächen:
Code:
         $ip_check_s = substr($userdata['session_ip'], 0, 4);
         $ip_check_u = substr($user_ip, 0, 4);

oder aber auch ganz aufzuheben:
Code:
         $ip_check_s = substr($userdata['session_ip'], 0, 0);
         $ip_check_u = substr($user_ip, 0, 0);


Wenn das nicht ausreichen sollte, bleibt nichts anderes übrig, als das gesamte Session-ID-Checking im Quelltext zu entfernen, die entsprechenden Blöcke sind jeweils:
Code:
// session id check
if ($sid == '' || $sid != $userdata['session_id'])
{
   message_die(GENERAL_ERROR, 'Invalid_session');
}

Die aus den betroffenen Dateien (in der Standardversion sind das: usercp_email.php, usercp_register.php, usercp_sendpasswd.php, login.php, modcp.php, privmsg.php) zu entfernen sind.

achtung: mit dieser Änderung wird die Sicherheit des boards gegenüber Session-Hijacking eindeutig vermindert!



Knowledge Base Offline -> At Work -> Was tun bei Fehlermeldung "Invalid Session"?