Hi!
Ein User meldet sich in meinem System an. Bei korrekter Anmeldung (also Kennung und Paswort OK), wird seine ID(kennung) in einer Session gespeichert.
Muss ich nun auf jeder Seite erneut überprüfen, ob der Sessioninhalt mit den Datenbankeinträgen übereinstimmt, oder ist diese Sicherheit schon dadurch gegeben, dass die Session ja nur auf den Browser anspricht, den der User im Moment benutzt??
Es kommt drauf an was genau passiert wenn in der Session keine ID steht. Denn wenn ich einfach mal eine erfundene Session-ID verwende:
www.example.com/script.php?PHPSESSID=1
Dann ist das für PHP direkt eine aktive Session vorhanden.
Kommt dann also drauf an was passiert wenn jetzt keine ID darin steht.
Und noch ein Punkt - die Session kann _jeder_ Browser übernehmen, der an die Session-ID kommt. Das heißt, sollte irgend jemand an Deine SessionID kommen, gibt er die manuell in seinen Browser ein, und schon ist er mit Deiner Session und damit auch mit Deiner darin gespeicherten ID unterwegs. Ob Du die dann jedesmal kontrollierst ist ziemlich egal - sie ist ja da!
Bisher habe ich gedacht, dieses Risiko ist doch sehr gering. Aber was wenn Du z.B. eine Software auf einer Messe präsentierst? Normalerweise hängt PHP beim 1. Request immer die Session-ID an alle Links(Trans-Sid, das heißt PHP weiß zu diesem Zeitpunkt nicht ob der Browser Cookies akzeptiert), das heißt, dann steht die SessionID für alle lesbar im Browser.
Und dann kommt ein Kollege von der Cracker-Abteilung der Konkurrenz, schreibt den Hash eben mit, oder macht ein nettes Digital-Foto aus sicherer Entfernung... und schwupp können sie sich einloggen und wer weiß was machen.
Daher würde ich die Verwendung von Trans-SID abschalten und cookies erzwingen. Oder HTTP-Auth verwenden.
Optional habe ich noch eine IP-Sperrfunktion vorgesehen, das heißt - wenn es sinnvoll ist (Standleitung...) kann man die eigene IP in der Session speichern, und es wird nur dieser IP Zugriff auf diese Session erlaubt. Ist natürlich doof wenn sich die IP öfter mal ändert - daher optional.
Grüße
Andreas