Horst: Session / Mysql

Beitrag lesen

hi,

ich mache das so:
User gibt seine Credentials (Benutzername, Passwort) ein und authentifiziert sich. Wenn Ok, wird eine Session aufgebaut. Dazu wird serverseitig ein eindeutiger (1) Key generiert, der einmal auf dem Server gespeichert und zum Anderen in einem Cookie an den Client geschickt wird.

Der Cookie ist nur solange gültig, wie die Browsersitzung besteht. Die Session ist solange gültig, wie der Session-Key im Cookie, der bei jedem Request mitgeschickt wird, gleichermaßen auf dem Server, bspw. in einer Datenbank vorhanden ist.

(1) Es darf innerhalb einer sehr, sehr großen Menge von möglichen Sessions KEINE Duplikate geben. Um einen solchen Key zu erzeugen, nehme ich die PID (Prozess-ID), das Datum, eine Zufallszahl und encrypte das mit Digest::MD5 oder mit der Perl-Funktion crypt(); und einem zufälligen Salt.

Die Dauer einer Session beschränke ich auch auf max 24 Stunden. Ein Cronjob fegt alle Session-Records von der Tabelle, die älter sind.

Neben einer Authentifizierung (Anmeldung mit Name, Password), kann die Anwendung weitere Dinge festlegen, wofür bestimmte User Authoriziert sind. Ich schreibe das deswegen mal hier auf, damit beide Begriffe, die oft miteinander verwechselt werden, einmal zweckmäßg in ein und demselben Textabschnitt stehen.

Auf jeden Fall ist es schlecht, einen Session-Key in der URL zu encoden, damit lassen sich Sessions sehr einfach auf Dritte übertragen, was mit einem cookie nicht so ohne Weiteres möglich ist.

Viele Grüße,
Horst Haselhuhn