Hallo,
Ich bin wieder mal soweit, dass ich mein Sessionmanagement neu
überdenke.
Bis anhin funktionierte es folgendermassen:
Die Session wurde entweder über cookies oder der URL verfolgt.
Dies jenachdem, was der User unsterstützt.
Es ist eine datenbankgestütze Anwendung, und ist eine Klasse,
die absolut ohne PHP-Sessionfunktionen auskommt (pure Absicht ;0) ).
Nun ich habe keinerlei Sicherheitsaspekte in diese Löung
implementiert.
Nun meine idee ist folgende:
Ich werde das Sessionmanagement neu schreiben mit folgenden Zielen:
2 (4) verschiedene "Betribsarten":
Session: normal mit oder ohne Cookies (secure=off)
Normale session Db basiert (wie bis anhin)
Session: secure ohne cookie
zusätzliche Überprüfung und speicherung der:
IP ($_SERVER['REMOTE_ADDR'])
Useragent (Browser) ($_SERVER['HTTP_USER_AGENT'])
Session: secure mit cookie
zusäztliche setzung eines cookies mit einem md5 hash (dyn. generiert)
-> der nur ein reload lang gültig ist
-> es wird bei JEDEM laden ein neues cookie gesetzt
und in der Db gespeichert.
Informationen um Validität zu überprüfen:
Useragent:
Es sind nicht sehr viele verschiedene Browser im gebrauch,
oder nur sehr wenige, die sehr oft benutzt werden.
Die Chance ist hoch das der Eindringling den selben Browser benutzt,
oder sich diesen installieren kann.
IP:
Problematisch ist, dass User hinter einem Router alle die gleiche
IP im Internet haben.
Auch dass sich die IP dynamisch ändern kann ist ein Problem,
da die Session dann ungültig wird. Ein Nachteil, den man akzeptieren muss.
SessionID per URL:
Sehr einfach zu entwenden/misbrauchen, doch nötig für Systeme/User,
die keine Cookies unterstützen.
SessionID per Cookie:
Bessere sicherheit gegen misbrauch als Lösung über URL, doch kein absoluter
Schutz gegen Misbrauch, da es eine Leichtigkeit ist Cookies zu kopieren.
Session Cookie mit dynamisch generiertem sicherheits Hash:
Erhöht die Sicherheit der Session enorm, da die SessionID durch ein
Sicherheitshash (32 zeichen) geschützt wird. Dieser verändert sich
bei jedem Laden einer Page.
Es ist also sehr viel schwieriger die SessionID zu erlangen und das
Sicherheitscookie, befor der User die nächste Seite lädt.
Was meint ihr zu diesem Ansatz? Ev. noch bessere Ideen? Kritik?
Andere Ansätze? Alles willkomen!
greez Pozor
Stillstand ist Rückschritt!
(Dieser Beitrag wurde von Pozor am 5. Apr 2004, 16:05 geändert)