2011-01-04 12 views
0

Ich benutze Symfony 1.4 und es scheint, dass Symfony jedes Mal, wenn ein Benutzer authentifiziert wird, eine Sitzung für den Benutzer neu erstellt. Wenn ich beispielsweise eine Site besuche und nicht eingeloggt bin, habe ich eine andere Session-ID. Wenn ich mich anmelde, habe ich eine neue, und wenn ich mich abmelde, habe ich noch eine neue. Das war nicht so in Symfony 1.0 und ich frage mich, ob es so sein soll?Symfony 1.4 Re-Creating Sessions/Sessionid beim Ändern der Authentifizierung

Antwort

1

Ich habe gerade den Quellcode von 1.0 überprüft, er existierte dort nicht.
Die Versionen 1.1 und höher generieren die Sitzungs-ID jedes Mal neu, wenn die Authentifizierung geändert oder Anmeldeinformationen hinzugefügt/entfernt werden.
Dies ist eine sehr gute Sicherheitsmaßnahme, verhindert Session Fixation Attacken.

Here's a link zum entsprechenden Änderungssatz in trac.

+0

Vielen Dank für die Informationen. Ich versuche zu implementieren "wer ist online" -Funktion vor Ort mit Datenbanksitzungen, und nicht sicher, wie dies jetzt zu erreichen, dass es so viele abgelaufene Sitzungen – BugBusterX

+0

Sie können versuchen, Unterklasse sfSessionStorage irgendwie die aktuelle Sitzung in der regenerate() - Funktion zu kennzeichnen , dann sag Symfony in factories.yml, um deine Klasse zu benutzen. – Maerlyn

+0

Ich habe gerade beschlossen, Benutzer-ID in Sitzung db manuell während der Anmeldung und deaktivieren Sie es während der Abmeldung – BugBusterX

0

Dies ist ein korrektes Verhalten. Es ist eher mit PHP-Sessions verbunden als mit Symfony. Ich glaube nicht, dass es in Symfony 1.0 anders war.

Sitzungs-ID sollte eindeutig und schwer zu erraten sein. Wenn Sie immer dieselbe Sitzungs-ID erhalten würden, könnte jemand, der einmal geschnüffelt hat, jedes Mal, wenn er es möchte, verwenden (speichern Sie es in einem Cookie und verwenden Sie die Website mit Ihren Zugangsdaten).

+0

Ich meine, es ändert sich jedes Mal, wenn die Authentifizierung passiert, also, wenn Sie die Website besuchen, sofort einloggen und abmelden, haben Sie bereits 3 verschiedene Session-IDs. Die erste wird erstellt, wenn Sie die Site zum ersten Mal besuchen, und bleibt gleich, bis Sie sich anmelden. Wenn Sie sich anmelden, wird eine neue Session-ID erstellt, und solange Sie angemeldet bleiben, bleibt sie gleich. Wenn Sie sich abmelden, weist es noch einen anderen zu. In Symfony 1.0 war das nicht so. – BugBusterX

+0

In diesem Fall könnten Sie mit symfony 1.0 recht haben. Jedenfalls ist es in 1.4 aus Sicherheitsgründen. Schön gelesen über Sitzungsfixierung (und Sitzungssicherheit im Allgemeinen): http://phpsec.org/projects/guide/4.html –