session_regenerate_id

kesnw

Erfahrenes Mitglied
Hi,

ich habe ein sessionbasiertes System mit Benutzeranmeldung und möchte, um Session Fixation zu vermeiden, bei der Anmeldung eine neue Session-ID durch session_regenerate_id() vergeben. Es ist nun so, dass die ID auf der ersten Seite geändert wird, die nachfolgenden Seiten aber wieder die alte ID haben. Warum?
 
Session-id vor Anmeldung: 0044e4f54139fe2a3b1cea23a8f1b05d
PHP:
session_start();
echo session_id();
session_destroy();
Session-id nach Anmeldung: 4de1917d647e145ba6f4ed790998d0c5
PHP:
session_start();
session_regenerate_id();
echo session_id();
Session-id auf der nächsten Seite: 0044e4f54139fe2a3b1cea23a8f1b05d
PHP:
session_start();
echo session_id();
 
Kann es sein, daß du sie session_id einer Variable zuweist und diese beim Link übergibst?
Oder übergibst du sie überhaupt?
Wenn ja, wie?
 
Sobald ich angemeldet bin steht folgendes am Anfang jeder Seite des "internen" Bereichs:

PHP:
session_start();
if (!isset($_SESSION['values'])) // Test ob Session registriert ist
{
  // if session check fails, invoke error handler
  header("Location: error/error.php?".$TEXT['LANG'][$cont]."");
  exit();
} // Session registriert
else {
echo session_id();
SITECONTENT;
}

$_SESSION['values'] wird mit Datenbankinhalten zum jeweiligen Nutzer gefüllt. Übergeben tue ich sonst nichts
 
Versuch zur Fehlersuche mal Cookies zu deaktivieren und die session id als URL Query zu übergeben.. Möglicherweise liegt da der Hund begraben!?
 
Das hab ich dazu auch noch gefunden:

Anmerkung: Falls Session-Cookies aktiviert sind, wird seit PHP 4.3.3 durch die Verwendung von session_regenerate_id() auch ein neues Session-Cookie mit der neuen Session-ID abgegeben.

D.h. für mich <v 4.3.3 = Cookie wird nur einmal generiert, und dann landest Du wieder bei deiner alten Session ID.

Wäre das einzige was mir auf die Schnelle einfällt...
 
Die PHP Version ist PHP Version 4.3.2

Ich finde es komisch, dass die alte Session-id überhaupt noch vorhanden ist, da in der PHP Referenz folgendes steht:

session_regenerate_id -- Ersetzt die aktuelle Session-ID durch eine neu erzeugte
 
Das mit dem Cookie ist ein guter Punkt! Hatte ich mir auch schon überlegt und ich denke da liegt der Fehler. Aber dann dürfte wie zuvor geschrieben ja die alte Session-id nicht mehr vorhanden sein, da diese ja eigentlich ersetzt wird...
 
Zurück