Du bist nicht angemeldet.

1

Sonntag, 28. Dezember 2003, 20:09

Eindeutigkeit von SessionIDs

wie die session-id bei PHP generiert wird, weiß ich, das steht ja hier, aber wie eindeutig is die kombination aus datum/uhrzeit und ip?

hat dazu jemand irgendwelche infos?

wie sicher kann ich denn sein, dass nicht die gleiche session-id zweimal erzeugt wird?

wie sieht das bei asp und jsp aus?

mein momentanter stand bei asp is: irgendwo auf dem server is ein zähler, der immer um 1 erhöht wird, dadurch sind die dinger zwar wahrscheinlich eindeutig, aber leicht vorherzusagen

asp.net: irgendein supertoller algorithmus, der aber nicht veröffentlicht ist ( oder? )

jsp: muss ich noch schauen


wäre schön, wenn da jemand was in petto hätte, meine suche nach diskussionen die eindeutigkeit und vorhersagbarkeit von session-ids bei diesen 3 skriptsprachen/-umgebeungen (asp) war nämlich nicht wirklich erfolgreich
Signatur von »mrhappiness« Ich denke, also bin ich. Einige sind trotzdem...

2

Montag, 29. Dezember 2003, 17:14

RE: Eindeutigkeit von SessionIDs

Zitat

Original von mr_happiness
wie die session-id bei PHP generiert wird, weiß ich, das steht ja hier, aber wie eindeutig is die kombination aus datum/uhrzeit und ip?

Nunja .. ziemlich würd ich sagen ;) ... man stelle sich vor irgendjemand greift tatsächlich auf deine Seite zu und hat zudem noch die gleiche remote_server Adresse. Sicherlich könnte jemand diese Adresse irgendwie fälschen ... aber nungut.

Zitat


hat dazu jemand irgendwelche infos?

nö... aber frag doch einfach mal bei de.comp.lang.php nach - die wissen bestimmt mehr - oder such bei groups.google.de nach Eindeutigkeit von SessionIDs

Zitat


wie sicher kann ich denn sein, dass nicht die gleiche session-id zweimal erzeugt wird?

ich wäre schon ziemlich sicher - ansonsten ließe sich doch sicherlich feststellen, wenn zwei gleiche SessionIDs erzeugt werden sollten ... man könnte die zumindest ja jedesmal abfragen, wenn eine neue Session gestartet würde und mit vorhandenen IDs vergleichen ... sollten zweimal die gleiche Auftreten, könnte man beide (bzw. die eine?) Sessions beenden ;)

Zitat



wäre schön, wenn da jemand was in petto hätte, meine suche nach diskussionen die eindeutigkeit und vorhersagbarkeit von session-ids bei diesen 3 skriptsprachen/-umgebeungen (asp) war nämlich nicht wirklich erfolgreich

[/quote]

ich würde mir da bei Standardanwendungen in denen es nicht um Bankgeschäfte geht, nicht soo die Sorgen machen - die Wahrscheinlichkeit halte ich doch für sehr gering... ansonsten frag bei o.g. Newsgroup mal nach - würde mich evtl. auch mal interessieren, wie man das Problem tatsächlich ausschließen könnte.
Man könnte sich natürlich auch noch nen eigenen Algorithmus überlegen und diesen verwenden um SessionIDs zu erzeugen ... mit session_id kann man ja auch eigene IDs zuweisen... z.B. könnte man ja nach time fragen, die ip auslesen ne Randomzahl anhängen die man irgendwie aus /dev/random liest und das ganze per md5 verschlüsselt ;)
Signatur von »Snoop« The use of COBOL cripples the mind; its teaching should, therefore, be
regarded as a criminal offence.
-- Edsger W. Dijkstra, SIGPLAN Notices, Volume 17, Number 5 (11.05.1930 - 07.08.2002)

3

Montag, 29. Dezember 2003, 18:11

RE: Eindeutigkeit von SessionIDs

Zitat

Original von Snoop
z.B. könnte man ja nach time fragen, die ip auslesen ne Randomzahl anhängen die man irgendwie aus /dev/random liest und das ganze per md5 verschlüsselt ;)

allerdings würde ich zur sicherheit noch nen crypt() drüberziehen und nen Schoko-Weihnachtsmann draufaddieren. :hupferl: :D :D
Signatur von »TheNobody Style«

4

Montag, 29. Dezember 2003, 18:31

Wenn ich und mein Vater genau gleichzeitig auf dieselbe Seite surfen haben wir dieselbe Session-ID (selbe IP da Router, selbe Zeit), aber aufgrund unserer Interessenslage ist dies ausgeschlossen... wir benutzen ja nicht mal dieselbe Suchmaschine :rolleyes:
bei einer Session ID von 32 Buchstaben/Zahlen gibt es 36³² Möglichkeiten (mehr als 63.340.286.662.973.277.706.162.286.946.811.000.000.000.000.000.000)... das bedeutet bei IPs von 32 Bit immer noch wesentlich mehr Möglichkeit als der 32 Bit Unix-TIMESTAMP oder selbst ein 64Bit-Timestamp hergibt...

Rein theoretisch und ohne PHP-QC-Betrachtung sind damit alle von einer Seite stammenden Session-IDs die von 1970 bis zum Jahr 467.321.967.226.933.679.217.594.609.548 n. Chr. auftreten nicht gleich (wenn ich keinen Rechenfehler gemacht habe :D)...

(Annahmen zur Rechnung: Ein Jahr hat 365,25 Tage, ein Tag 24 Stunden, eine Stunde 3600 Sekunden und eine Sekunde 1000 Millisekunden, IPs haben 32 Bit, für jede Millisekunde und IP gibt es eine eigene ID).

[EDIT]Unnötige Annahmen entfernt...[/EDIT]
Signatur von »Alex« Man muss nichts sehen, um zu sehen, dass man nichts sieht, aber man muss etwas sehen, um zu sehen, was man nicht sieht.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Alex« (29. Dezember 2003, 18:42)


5

Dienstag, 30. Dezember 2003, 16:16

RE: Eindeutigkeit von SessionIDs

Zitat

Original von mr_happinesswie eindeutig is die kombination aus datum/uhrzeit und ip?


nun prinzipiell sollte für die session einfach eine Zufallszahl benutzt werden, diese wär dann theoretisch bei einer 128Bit session-id (standard) mit einer wahrscheinlichkeit von 1/(2^128 ) nicht eindeutig also extreeeem unwahrscheinlich.


Da es ja bekanntermaßen keine Zufallszahlen auf normalen Rechnern gibt, muß man irgendwie eine erzeugen. Bei der session-funktion wird einfach die zeit in millisekunden + ip + prozess-id als zufallszahl benutzt.
Falls in der config-variablen noch ein "session.entropy_file" angegeben ist, wird dieses noch zusätzlich benutzt.
Über diese "Zufallszahl" wird jetzt einfach ein md5() gejagt und fertig is die session-id.


Da bei einprozessormaschinen der algorithmus niemals exakt zur selben mikrosekunde ablaufen kann(*), ist die eindeutigkeit schonmal sichergestellt. Für Mehrprozessormaschinen wird deswegen noch eine prozess-id angehängt.
Somit ist eigentlich in jedem Fall sichergestellt das die zufallszahl immer einmalig ist.


durch den 128Bit-md5-hash kommt natürlich auch hier wieder die 1/(2^128 ) wahrscheinlichkeit für 2 doppelte session-ids und zusätzlich noch die Wahrscheinlichkeit für einen übertragungsfehler hinzu. Beides sollte aber vernachlässigbar sein ;)



Gorgonzola
*) zumindest wenn der algorithmus ein paar hundert taktzyklen dauert.
Signatur von »Gorgonzola« There is a theory which states that if ever anyone discovers what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre.
There is another theory which states that this has already happened.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Gorgonzola« (30. Dezember 2003, 16:31)