Doppelte SessionID´s

Bash, Shell, PHP, Python, Perl, CGI
f-c0d3
Posts: 17
Joined: 2004-03-08 17:15

Doppelte SessionID´s

Post by f-c0d3 »

Hallo,
ich hab folgendes Problem:
Wenn ein User eine Seite meines Webs besucht erstelle ich beim ersten Besuch eine Session-ID. Diese Session-ID wird von Apache erzeugt (scheint mir ein MD5 codierter String zu sein). Die erzeugte Session-ID wird auf jeder Folgeseite weiter benutzt. Zudem speichere ich die Session-ID und andere Daten in einer Datenbank. Bei jedem Zugriff vergleiche ich Datenbank und Session.
Diese Technik hat nun 4 Wochen einwandfrei funktioniert. Ich hatte in meiner Datenbank eine Liste mit 33000 erzeugten Sessions-ID´s und den zugehörigen Daten die während der Gültigkeit der Session-ID verwendet wurden. Doch heute morgen hat mein Apache angefangen zu spinnen. Zum Schluss bin ich drauf gekommen das der Apache Session-ID´s erzeugt hat die bereits mal vergeben wurden!!! Wie kann das denn sein? Ich dachte die Session-ID die der Apache erzeugt werden aus der Datum + Uhrzeit + Millisekunden erzeugt und können somit nicht 2mal vorkommen.

Kann mir jemand sagen was sich da machen lässt oder wo ich anfangen soll zu suchen um dieses Problem zu beheben?
Bzw. woran kann das liegen das der Apache mit doppelte Session-ID´s erzeugt.

Grüße

PS: Ich habe das Datum auf dem Server geprüft. Es ist das aktuelle Datum.

Idee wäre gewesen das das Datum auf dem Server in der Vergangenheit liegt und deswegen Session-ID´s doppelt vorkommen.
marsupilami
Posts: 20
Joined: 2004-01-31 19:13
Location: Böblingen

Re: Doppelte SessionID´s

Post by marsupilami »

Ich glaub du hast das System noch nicht ganz verstanden.
erstens md5 macht einen hash über einen String, aber es kann vorkommen das wei unterscheidliche String den gleichen Hash haben. Selten, sehr selten aber möglich.

Das andrere, wer sagt das eine Sessionid nicht doppelt vorkommen darf? Ich glaub da musst du noch mal in der PHp Dokumentation lesen.
Es ist durch aus möglich das Sessionids doppeltvergeben werden, aber nicht in einem zeitraum von 2 tagen. Wie du selbst sagtest hast du 33t einträge in der DB. die wahrscheinlichkeit ist da nicht gerade klein.

Mal ne Frage warum speicherst du den Schrott? Das müllt nur deine DB zu, und hat absolut kein sinn, da die Sessions ja nach einer bestimmten Zeit ablaufen. sprich du wirst es niemals schaffen einem User eine alte Session zuzuordnen, da du ja garnichtweißt wer wer ist...
Außerdem wurde dazu das Sessionsystem auch nicht entwickelt.


Gru0
Stefan