Falk Pauser: Session-ID und eindeutige Zuordbarkeit

hi leute,

mal angenommen man stellt seinen surfern bestimmte dienste
auf der website zur verfuegung. unterschiedliche user haben
das recht unterschiedliche dienste zu nutzen - sie werden
anhand einer an das jeweils aufgerufene script angehangenen
session-id indentifiziert.

frage: wie eindeutig kann man user anhand der session-id
       identifizieren?

ich stelle mir z.b. vor eine eindeutige sessionid anhand
der folgenden daten zu generieren: ip|dateTime|laufendeNr

diese SessionID soll dann verschluesselt werden
1. Moeglichkeit: MD5      -> ist aber ireversibel
2. Moeglichkeit: Blowfish (man kann die IP wieder entschluesseln)

Frage: ist es wirklich moeglich, einen surfer eindeutig
zu identifizieren (wenn man nur die IP hat)? ist es
sinnvoll wenigstens die IP zu ueberpruefen, sprich die
sessionID jedesmal zu encrypten und zu schauen, ob der anfrager
wenigstens die gleiche IP hat? -> falls nicht, session loeschen...

was sind eure erfahrungen mit session-ID anhaengseln?

mfg
-falk-

ps: cookies kommen nicht in frage...

  1. Tag

    Frage: ist es wirklich moeglich, einen surfer eindeutig
    zu identifizieren (wenn man nur die IP hat)? ist es
    sinnvoll wenigstens die IP zu ueberpruefen, sprich die
    sessionID jedesmal zu encrypten und zu schauen, ob der anfrager
    wenigstens die gleiche IP hat? -> falls nicht, session loeschen...

    Hm, also ich speicher als eine Variable der Session die IP des Benutzers und überprüfe die bei jedem Seitenaufruf. Stimmt die aufrufende IP nicht mit der gespeicherten überein, wird die Session gekillt.
    Zusätzlich könntest Du ja noch den USER-Agent überprüfen ...

    Ciao,

    Harry

    1. Tag

      Guten Tag ;)

      Hm, also ich speicher als eine Variable der Session die IP des Benutzers und überprüfe die bei jedem Seitenaufruf. Stimmt die aufrufende IP nicht mit der gespeicherten überein, wird die Session gekillt.
      Zusätzlich könntest Du ja noch den USER-Agent überprüfen ...

      ...und vielleicht den Referrer und so Deine selbst vergebene Session-ID nochmals überprüfen.

      Ciao

      Alexander

      1. Grüssi!

        Hm, also ich speicher als eine Variable der Session die IP des Benutzers und überprüfe die bei jedem Seitenaufruf. Stimmt die aufrufende IP nicht mit der gespeicherten überein, wird die Session gekillt.

        ...und vielleicht den Referrer und so Deine selbst vergebene Session-ID nochmals überprüfen.

        hmmm und schon sind die beiden blödesten Fehler gemacht die man machen kann: IP und Referrer :-( Der Grund steht ein paar threads weiter unten:

        <?m=131041&t=25125>

        IP kann sich in einer Session mehmals ändern (dyn. IP-Vergabe), und Referrer kann leicht manipuliert werden. Ich habe bei meinem Opera das Referrer-Logging z.b. geperrt.

        lg bernhard

        PS: Es waren in den letzten Tagen wirklich überdurchschnittlich viele session-ids-threads. Ein Grund mehr hier ab und an mal mitzulesen ;-) Nun müsst ihr warten, bis man das Archiv durchforsten kann, und diese Thredas wieder findet. Aber auch sonst wäre das Archiv einen Versuch Wert. Bin sicher ihr seid nicht die ersten, die dieses Problem quält ;-)

        1. hallo,

          danke fuer eure antworten! zusammenfassend und nach studie der angegebenen zusaetzlichen quellen, kann man da zusammenfassend sagen, dass folgendes vorgehen "sicher" waere:

          • user loggt sich ein
          • user wird gecheckt, falls ok:
            -> sessionid erzeugen aus: login+systime (user980000000)
            -> MD5-verschluesseln = eindeutige SID

          diese sessionID wird an die scripts angehangen um den user
          zu verifizieren.

          • referer und ip werden ausser acht gelassen da man nicht sicher
              sein kann, ob der user diese daten uebermittelt bzw. ob die
              ip nicht dynamisch vergeben wird bzw. ob der user nicht hinter
              einem router sitzt (firmennetzwerk etc.)

          • zu erhoehung der sicherheit kann ein cookie geschrieben werden
              das die sessionID enthaelt, per javascript wird geprueft, ob
              die sessionID in ordnung ist (z.b. uebermittelung der cookieSID
              gleichzeitig mit der angehangenen SID und ueberpruefung, ob beide
              identisch sind

          was meint ihr dazu? ist das sicher?

          mfg
          -falk-

  2. Hi Falk,

    die IP ist IMHO keine gute Basis zur Erzeugung einer Session-ID - aus Netzwerken heraus können durchaus mehrere Leute gleichzeitig mit der selben IP auf Deinen Server zugreifen.

    Zwei Wege halte ich - unabhängig von Dir zur Verfügung stehenden Ressourcen - für denkbar:

    1. Die IDs werden einfach hochgetickert, (d.h. letztvergebene ID plus 1), wobei Du natürlich die bereits vergebenen IDs in einer Tabelle speichern musst und von dort die jeweils letztvergebene auslesen musst - das kann allerdings zu Performance-Problemen führen.

    2. Die ID wird rein aus Datum/Uhrzeit (Millisekunden-genau) erzeugt, wobei Du dann über ein "Locking" sicherstellen musst, dass pro Millisekunde nur eine ID vergeben werden darf.

    HTH & Grüße,

    Utz