Sessions, Cookies und anderes Gedöns für eine Benutzerverwaltung

PampersRocker

Grünschnabel
Hallo zusammen,

ich oute mich gleich: Ich bin Anfänger und mir fehlen bestimmt an der einen oder anderen Stelle noch Grundlagen, obwohl ich mittlerweile viele Turorials und einiges an Literatur zum Thema gelesen habe.

Ich habe mich in den letzten Tagen intensiv damit beschäftigt wie ich diverse Datenbankoperationen in PHP Skripte verpacke. Alles mit dem Ziel irgendwann eine objektorientierte Benutzerverwaltung herzustellen. Was mich stehts sehr beschäftigte war die Sicherheit der einzelnden Schnippsel. Jetzt möchte ich mir gerne Grundlagen für ein sauberes Sessionmanagement erarbeiten immer mit dem Ziel im Hinterkopf die Verwaltung irgendwann stehen zu haben. Die meisten Quellen, die ich gefunde habe, waren vom Datum her schon recht betagt und das verunsichert schon. Die unpräzisen Fragen (ich weiß die Forenregeln) lauten also:

- Wie ziehe ich ein sicheres Sessionmanagement auf?
- Ist es sinnvoll die Sessions in einer DB abzuspeichern, wenn ein ganz normales Web-Hosting Paket genutzt wird? Wie sieht es in diesem Zusammenhang mit der Performance aus? Vielleicht nur SessionIds um ggf. einen Onlinestatus abfragen zu können?
- Welche Rollen spielen Cookies?
- Wie sieht eine aktuell halbwegs sichere Konfiguration aus?

Aktuelle Links oder Literaturhinweise (praxisorientiert) wären nett. Eigene Erklärungen zum Thema um den Grundstein einer Diskussion zu legen großartig.

Vielen Dank für eure Antworten,

beste Grüße,

Lars
 
Du hast Glück, dass ich momentan auch ein eigenes Sessionsystem erstelle oder besser gesagt: es steht schon. Ich speichere die Sitzungsdaten in einem serialisierten Array, welches ich aus Sicherheitsgründen noch einmal mit Base 64 kodiere. Diese Daten speichere ich als erste Zeile in eine Datei, als zweite Zeile habe ich eine MD5-Prüfsumme der serialisierten und kodierten Nutzerdaten. Wenn nun bei einem erneuten Aufruf der Session die Daten geladen werden, wird überprüft, ob die Daten mit der Prüfsumme übereinstimmen. Falls dem nicht so ist, wird die Session verworfen und eine neue gestartet, ansonsten werden die Daten übernommen.

Ich muss dazu noch sagen, dass ich die eigentlichen Sessiondaten von den Daten getrennt habe, die nur ein angemeldeter Nutzer haben kann. Diese speichere ich beim Aufruf meiner Sessionklasse in eine eigene Nutzerklasse und habe somit ein eigenes Nutzerobjekt. Dieses nimmt die Änderungen der Nutzerdaten entgegen und verändert sie am Ende in der Datenbank, falls sie sich geändert haben sollten. Danach werden die Daten wieder in die Sessionklasse übernommen und normal mit in der Sessiondatei gespeichert.
 
Zurück