»»Gemessen an der zusätzlichen Sicherheit ist es eigentlich schon sträflicher Leichtsinn, diese fünf zusätzlichen Zeichen pro SQL-Befehl nicht einzutippen.
Okay, werde ich machen.
- Wenn richtig, wird ein Cookie anhand oberen Codes gesetzt, mit dem Usernamen als Value. Das Cookie verliert die Gültigkeit beim Schließen des Browsers.
Das ist Mist.
Wieso?
Okay, wenn ich es über eine SID mache, brauch das Cookie nicht zu verfallen, weil die DB eh dann aussagt, daß die halbe Stunde (oder so) vorbei ist.
Überlege doch mal: Was hindert Dich als furchtbar böser Wicht[tm] daran, in Deinem Browser einen Cookie mit einem beliebigen Usernamen zu erzeugen, wo Cookies von Browsern doch als Klartextdateien gespeichert werden? Gar nichts.
Hmm. Genau DAS hatte ich befürchtet.
Dann geht das ja schonmal gar nicht.
Beim Anmelden erzeugst Du nach Prüfung von Name und Passwort eine solche ID, speicherst sie auf dem Server (mit Verweis auf den Benutzernamen) und als Cookie im Browser. Beim nächsten Seitenaufruf bekommt der Server diese ID wieder zurückgeliefert und kann anhand der bei ihm gespeicherten IDs herausfinden, welcher Benutzer da gerade am Werk ist.
Hört sich gut an.
Achte darauf, dass der Server zusammen mit der ID auch eine Verfallszeit von vielleicht 10 Minuten speichert, so dass niemand nach drei Tagen mit einer zufällig aufgeschnappten ID eine Sitzung kapern kann.
Zum Glück ist Date::Calc intalliert :)
Aber was mache ich mit den "toten" Sitzungen? Wenn das einige Zeit läuft, hab ich ja tausende Einträge im "Session"-Table (kann doch ein Table sein, oder muss es eine abgetrennte DB sein?), die nicht mehr gebraucht werden.
Dann langt es ja wohl, wenn ich bei jedem SID-Check auch gleichzeitig alle SIDs lösche, die älter als n Tage sind, oder?
Ausser der Session-ID müssen keine weiteren Daten im Cookie gespeichert werden, auch der Benutzername kann über die ID aus der internen Datenbank geholt werden.
Leuchtet ein.
Was ist, wenn der User keine Cookies akzeptiert?
(Frage: Wie häufig kommt das vor?)
Ich nehme an, dann schleppt man die SID im Querystring ständig mit?
Unter http://search.cpan.org/search?query=Session&mode=all findest Du passende Unterstützung.
Ich hab laut sysinfo.cgi meines Serverbetreibers nur folgende CGI-Module installiert:
CGI 2.81
CGI::Carp 1.23
CGI::Cookie 1.20
CGI::Fast 1.04
CGI::Pretty 1.05
CGI::Push 1.04
CGI::Util 1.3
ODer ist Session in CGI.pm mit eingebettet (bin auch bei Modulen noch recht noobig drauf...)
Erstmal danke für deine Hilfe.