Wolfgang: Muss Session überprüft werden???

Hallo Leudde,

habe folgende Situation:

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??

Dank für Eure Hilfe schon mal im Voraus.

Viele Grüße

Wolfgang

  1. 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

    1. Hi Andreas,

      es sieht so aus, dass die Session in einem Cookie gespeichert ist. Die ID wird also nicht in der URL übertragen sondern in der Query. Die IP Adresse wechselt laufend, da es sich hier um keine User mit Standleitung handelt. Also fällt diese Variante aus. Eine jeweilige Überprüfung wäre somit auch hinfällig, da ein User ohne Session-ID die Seite zwar manuell aufrufen kann, aber nichts relevantes darauf sehen, bzw. ändern kann.

      Danke mal soweit.

      Viele Grüße

      Wolfgang

      1. Hi,

        also wenn Du die SESSIONID mit der IP abgleichst dann hast du ja schonmal eine grobe Einschränkung des Kreises der Personen, die die SID nutzen können. Rate ich zu, wenns um irgendwelche Konfigurationsmenus geht.

        Andernfalls (Foren, etc.) kannst Du das auch durch einen direkten Abgleich auf jeder Seite über eine global.php lösen.

        Gruss
        Stefan