Häufigkeit der SessionID

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Häufigkeit der SessionID

    Hallo, ich möchte zur Auswertung eines Besucherzählers
    die SessionID benutzen. Allerdings weiß ich nicht wieoft
    sich diese wiederholen kann?

    Bzw. Wie hoch ist die Wahrscheinlichkeit, dass sich die Kombination SessionID + IP-Adresse wiederholt?
    www.webshop4free.de

  • #2
    Definiere "wiederholt"! Häh???

    *verschieb* Ich seh hier kein PHP-Problem!

    Comment


    • #3
      sehr gering.

      allein schon für die sid - 26 buchstaben + 10 ziffern = 36 symbole.
      und eine sid ist 32 zeichen lang?
      dann gibt es 36^32 verschiedene sid:
      6,3 * 10^49

      oder?

      Comment


      • #4
        Übrigens gibt es nur theoretisch 36^32 SIDs, denn real wird eine SID von PHP aus der aktuellen Zeit und einer Pseudozufallszahl (aus der PID) erzeugt, wenn kein entropy_file und ausreichend entropy_length gesetzt ist. Dann wird das ganze mit MD5, ab PHP5 wahlweise auch SHA1 gehasht. Das beschränkt den ohnehin schon begrenzten Wertebereich noch mehr.

        Trotzdem ist es allein wegen der Verwendung der Zeit bei der SID-Erzeugung und der Tatsache, dass es ziemliche viele IPs gibt, die zu einem Zeitpunkt aber nur einmal vergeben sein können, ziemlich eindeutig. Wenn das nicht reicht, nutze die entropy_* Parameter oder erzeuge deine SID selbst - etwa aus IP, microtime() und /dev/random ohne zu hashen. Der Effekt wird aber nicht nachweisbar sein.

        Comment


        • #5
          Der Effekt wird aber nicht nachweisbar sein.
          sehr richtig.

          Comment


          • #6
            @onemorered

            Hab zwar wenig bis null Ahnung davon wie die SID nun genau erzeugt wird, mir fällt bei mir immer nur auf, dass die Werte der einzelnen Stellen nicht über 'F' hinausgehen, also jede Stelle kann bei mir nur 16 verschiedene Werte (0-9,a-f) enthalten, ist also quasi hexadezimal.

            Gehts bei euch noch höher? Kann das an irgendwelchen Einstellungen bei mir liegen?

            Gruss
            Quetschi
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Comment


            • #7
              Original geschrieben von Quetschi
              mir fällt bei mir immer nur auf, dass die Werte der einzelnen Stellen nicht über 'F' hinausgehen, also jede Stelle kann bei mir nur 16 verschiedene Werte (0-9,a-f) enthalten, ist also quasi hexadezimal.

              Gehts bei euch noch höher?
              nö - das ist der defaultzeichenbereich, aus dem sich PHP bei der erstellung der SID bedient.

              Kann das an irgendwelchen Einstellungen bei mir liegen?
              session.hash_function und session.hash_bits_per_character würden dir eventuell ermöglichen, daran was zu ändern (allerdings nur in geringem umfang).
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Comment


              • #8
                dann sind's 16^32 = 3,4 * 10^38

                Comment


                • #9
                  Ja ich habe die 36^32 einfach abgeschrieben.
                  Eigentlich auch egal, aber wenn du es genauer wissen willst:

                  Ab PHP5 steht folgendes in der php.ini:
                  Code:
                  ; Define how many bits are stored in each character when converting
                  ; the binary hash data to something readable.
                  ; 4 bits: 0-9, a-f
                  ; 5 bits: 0-9, a-v
                  ; 6 bits: 0-9, a-z, A-Z, "-", ","
                  session.hash_bits_per_character = 4
                  Ich korrigiere also: Es gibt aufgrund der Erzeugung nicht [16|32|64]^32 SIDs ...

                  PHP5 bezieht bei der Erzeugung der SID übrigens die IP schon mit ein:
                  Code:
                  sprintf(buf, "%.15s%ld%ld%0.8f", remote_addr ? remote_addr : "",
                       tv.tv_sec, tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
                  - tv.* steht für timevalue,
                  - php_combinde_lcg(), der Pseudozufallszahlengenerator macht im wesentlichen dies
                  Code:
                  if (!LCG(seeded)) lcg_seed(TSRMLS_C);
                  MODMULT(53668, 40014, 12211, 2147483563L, LCG(s1));
                  MODMULT(52774, 40692, 3791, 2147483399L, LCG(s2));
                  z = LCG(s1) - LCG(s2);
                  if (z < 1) z += 2147483562;
                  return z * 4.656613e-10;
                  - lcg_seed() macht
                  Code:
                  if (gettimeofday(&tv, NULL) == 0) LCG(s1) = tv.tv_sec ^ (~tv.tv_usec);
                  else LCG(s1) = 1;
                  #ifdef ZTS
                  	LCG(s2) = (long) tsrm_thread_id();
                  #else
                  	LCG(s2) = (long) getpid();
                  #endif
                  Last edited by onemorenerd; 14-06-2005, 14:44.

                  Comment

                  Working...
                  X