molily: Session hijacking verhindern

Beitrag lesen

Meinst du damit das $_SESSION Array?
Ja, das geht.

Wäre das nicht irgendwie recht sinnfrei gegen CSRF?

Nein, wieso? $_SESSION ist für den Angreifer nicht einsehbar.

Bei CSRF geht es doch gerade darum, dass man die Session des Opfers ausnutzt.

Bei CSRF kennt der Angreifer den Inhalt der Session nicht. Er nutzt lediglich aus, dass der gültiger Session-Cookie vorhanden ist und mit jedem HTTP-Request mitgesendet wird, auch wenn der Request von einer fremden Site initiiert wurde.

Deshalb gehört der Token auch expliziet in die Formulare und z.B. eine Datenbank und nicht in die Session.

Die Session = ein auf dem Server gespeicherter Datensatz, der unter der Session-ID gespeichert wird.

Ob die Sessiondaten nun in einer Datenbank oder als Dateien im Datensystem gespeichert werden (wie PHP es meines Wissens standardmäßig macht), spielt keine Rolle.

Manche Systeme speichern die Sessiondaten sogar im Cookie selbst und signieren und/oder verschlüsseln diesen mit einem auf dem Server gespeicherten Schlüssel. Auch das ist kein Problem an sich (solange man darin keine Daten speichert, die nicht einmal der eingeloggte Nutzer sehen darf). Der Angreifer kann den Cookie ja nicht lesen. Zumindest nicht ohne weitere Sicherheitslücken (z.B. XSS). Wenn der Cookie kompromittiert wird, dann ist der CSRF-Token ohnehin hinfällig.

Natürlich muss der CSRF-Token in jedes Formular eingebunden werden und der Token aus dem Formular muss mit dem Token aus der Session überprüft werden.

Grüße,
Mathias