Tobi2: Sessions und Sicherheit

Beitrag lesen

Indem Du Sitzungen ohne Cookies fährst bspw. Das oben geschilderte Szenario habe ich aber nicht ganz verstanden, ist ohnehin nicht mein Spezialgebiet.

Z. B. so (Pseudo-Code):

session_start();

$login = FALSE;

if (isset($_SESSION['login']))
  {
   if  (Zeit nicht abgelaufen) $login = true;
   else fehler: Zeit abgelaufen
  }

else if (isset($_POST['aufruf kommt von loginformular']) && count($_COOKIE) == 0)
  {
    fehler: Cookies ausgeschaltet
  }

else if (isset($_POST['aufruf kommt von loginformular']))
  {
    Login-Daten prüfen
    in Ordnung? => $login = true; $_SESSION['login'] = true; $_SESSION['zugriffszeit'] = time();
  }

if (!$login)

{
   evtl. Fehler-Ausgabe:
    a. Zeit abgelaufen
    b. Cookies ausgeschaltet

Formular anzeigen
   exit;

Wird bei Fall b. das Formular abgesendet, konnte   session_start(); keinen Cookie setzen. Erst nach dem Abschicken wird das Cookie gesetzt. Da es aber zuvor keins gab, ist die Abfrage if (isset($_POST['gesendet']) && count($_COOKIE) == 0) wieder wahr, und der User landet wieder an dieser Stelle, obwohl ja schon die Cookies eingeschaltet sind. Erst beim zweiten Absenden ist die Abfrage nicht mehr wahr, und die Loginüberprüfung findet statt.
 }