Mailinglisten-Archive |
Norbert Pfeiffer wrote: > Hallo, > > [PHP-Sessions-ID] > Mal rein logisch gesehen liefert microtime(); bei zwei Aufrufen > nie den gleichen String und somit liefert md5(microtime()); > auch ueber Jahre keine Dubletten - wo ist das Problem ? microtime liefert keine Doubletten. MD5 schon!. Es gibt nämlich mehrere Werte, die zum gleichen Hash führen. Es ist zwar unwahrscheinlich, aber das sessionsystem sollte so aufgebaut sein, dass es keine zu schlimmen Auswirkungen hat, wenn es doch mal vorkommt (zum Beispiel einfach den Benutzer sagen, dass der Lgin fehlschlug und er es nochmal versuchen soll). Nebenbei gibt es auch noch uniqid(). uniqid basiert auch auf der aktuiellen Mikrotime... Aber du kannst noch ein zufälligen prefix übergeben (deinen Phantasien, wie der aussieht, eventuell einfach mal die ip des klienten, dessen user_agent und dann noch einmal mt_rand() sind keine Grenzen gesetzt...). > Sollte eine Anwendung jedoch auf einer Mehrprozessor-Maschine > eingesetzt werden, liesse sich noch ein fortlaufender Zaehler > anhaengen, um auch dieses Problem zu umgehen. Und wieso braucht man dafür eine mehrprozessormaschine? Apropos. Idee: Man könnte es auch noch so wie Exim machen: unix-timestamp + pid. Vielleicht noch microtime statt unixtime. Das sollte dann eine eindeutige id geben... Allerdings müsste man die immernoch mit zufälligeren Daten mixen, da sonst zu berechenbar. Von Ringo: > jetzt kommt es noch schlimmer. > Nachdem ich heute noch ein wenig geforscht und getestet habe, > musste ich feststellen, dass ich über den im Google Cache > liegenden Link samt Session-ID wirklich auf einen angemeldeten > User innerhalb meiner Webseite zugreifen konnte. Allerdings > nicht der, welcher dazu im Google Cache ursprünglich namentlich > vermerkt ist, sondern ein völlig anderer. Ich hätte nun dessen > Daten und Einstellungen ändern können. Es ist möglich, dass dies Zufall ist, aber sehr sehr unwahrscheinlich. Logge doch einfach mal jede generierte Sessionid und schau nach, ob da manche ids mehrfach generiert werden. Du hast auch nicht zufällig ein Skript am laufen, welches ständig die Uhrzeit an deinem Computer verstellt, ne? ^^. > > m. b. G. Norbert Yannik
php::bar PHP Wiki - Listenarchive