Michael: Session Problem mit AJAX

Beitrag lesen

Ich benutze $_SESSION['userid'] und $_SESSION['userpw']

Hmmmmm... dann haste ein ziemlich geringes Sicherheitsbedürfnis.

Ein Gedankenspiel:

User "Bernd" sitzt in nem Internetcafe, surft gerade auf Deiner Seite, hat sich eingeloggt und wird vom Nachbarn, der ne Tasse heiße Schokolade hat rein zuufällig angerempelt. Die Schokolade schwappt über, die Klamotten sind ruiniert. Bernd stürmt ins Bad um zu retten, was noch zu retten ist und der Nachbar setzt sich vor Bernds PC, sucht schnell nach den Session-Daten (die entweder bei den Cookies, oder gar in der Adresszeile stehen) und verschwindet anschließend spurlos.
Tags drauf stellt Bernd fest, daß er sich nicht mehr in seinem Account einloggen kann. Das Passwort wurde geändert, oder der Account gar gelöscht.

Warum? Weil der böse unerkannte Nachbar nicht nur Bernds Session-ID, sondern sogar Name und Passwort bekam!
Selbst wenn das Passwort verschlüsselt ist: Was hindert ihn dran, seine eigene Session so umzuschreiben, daß sie das verschlüsselte Passwort beinhaltet?
Und selbst wenn Du ne Möglichkeit hast, das irgendwie zu blockieren: Was ist mit Rainbow-Tables?

Also: Session-IDs haben durchaus ihren Sinn.
Eine zufällig generierte alphanumerische Folge zum Abgleich, die nach Ablauf nutzlos wird und auch während der aktiven Phase dem armen Bernd nicht gleich den Account kostet, weil man bei solchen Feldern wie Passwortänderung auch immer zur Sicherheit nach dem alten Passwort fragt.

Aber nochmal zu der Frage, wie Du eine weitere Abfrage unterbindest (auch wenn da der andere Zweig drauf ebenfalls eingeht) :

Original von Sven Rautenberg:

Der Server MUSS prüfen, ob die Session gültig ist - ansonsten manipuliert ein Angreifer diese clientseitige Prüfung aus der Website heraus und greift dann auch auf abgelaufene Sessions zu.

Natürlich muß er das ... AUCH !

aber nichts hindert Dich daran, eine Vorabkontrolle clientseitig zu unternehmen um sich eine weitere Abfrage zu sparen.

Schönen Gruß!

Michael