Hallo Ferdinand,
die Session-Ids für sich betrachtet sind sehr sicher, da sie lang genug sind, daß die Möglichkeit, eine gültige zu erraten, praktisch nicht gegeben ist (außer jemand hat *extrem* viel Rechenpower und Bandbreite zur Verfügung).
Sicherheitsprobleme ergeben sich eher an der "Peripherie", z.B.:
- wenn Du kein SSL verwendest, werden beim Einloggen Username und Passwort im Klartext übertragen, genauso wie später die Session, das ist wohl das größte Sicherheitsrisiko, weil man die mit einem packet sniffer abfangen kann
- wenn Du die Session-Id an die Url anhängst, kann sie je nach Browser in den Referrer-Logs eines anderen Servers auftauchen, deshalb sollte man den Timeout für die Session kurz halten.
Ein solches "übernehmen" einer session (wo jemand nicht die sessionid errrät, sondern sie z.B. über die Logdateien oder packet sniffing herausgefunden hat) ganz unmöglich zu machen, erfordert dann doch ein bißchen mehr Aufwand.
Nicht umsonst sagt das PHP-Manual:
"Sessions are not reliable as a secure authentication mechanism. "
Das ist ein wenig hart ausgedrückt, in 99,9% der Fälle reichen Sessions völlig aus, aber eben nicht, weil sie wasserdicht sind, sondern weil der Aufwand, den Schutz zu umgehen, in keinem Verhältnis zum erwarteten Gewinn (z.B. Posten in einem Forum unter einem anderen Namen) stehen, und verhältnismäßig wenige die technischen Fähigkeiten haben, das zu machen.
Falls Du Informationen schützen willst, die wirklich "etwas wert" sind (Kreditkartennummern, Firmeninterna, Anderkonten usw.), dann soltest Du zusätzliche Sicherungsmaßnahmen verwenden (und auf jeden Fall SSL, hilft ja auch nichts, wenn zwar die Authentifizierung wasserdicht ist, aber die abgefragten Informationen weiter unverschlüsselt übertragen werden)
Viele Grüße
Stephan