eindeutigkeit von PHP-SessionIDs

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • eindeutigkeit von PHP-SessionIDs

    hat dazu jemand irgendwelche infos?

    den verwendeten algorithmus zur generierung einer session-id gibt's ja bei php.net, aber so wie ich das sehe (nach nem groben überfliegen) generiert der die session-id abhängig von der serverzeit und sonst nix

    wie sicher kann ich denn dann sein, dass nicht die gleiche session-id zweimal erzeugt wird?
    Ich denke, also bin ich. - Einige sind trotzdem...

  • #2
    also so wie ich das sehe wird auch noch die IP-Adresse eingerechnet.

    Außerdem kann man wohl davon ausgehen, dass es nicht 2 gleiche SessionIDs geben wird, denn genau das ist ja Sinn der Session ID.

    hier is die Funktion:
    http://lxr.php.net/source/php-src/ex.../session.c#606

    P.S.: Es wird eine Funktion verwendet, und kein Algorithmus, sonst müsste man sich wirklich Sorgen machen um die Eindeutigkeit
    Zuletzt geändert von Hopka; 28.12.2003, 16:20.
    hopka.net!

    Kommentar


    • #3
      Original geschrieben von Hopka
      also so wie ich das sehe wird auch noch die IP-Adresse eingerechnet.
      in meinem 4.3.4 quellcode nich, daher die frage
      Außerdem kann man wohl davon ausgehen, dass es nicht 2 gleiche SessionIDs geben wird, denn genau das ist ja Sinn der Session ID.
      genau das is ja meine frage
      Es wird eine Funktion verwendet, und kein Algorithmus, sonst müsste man sich wirklich Sorgen machen um die Eindeutigkeit
      eine funktion ordnet zu (definitionsbereich --> Wertebereich) und ein algorithmus is eine verhaltensvorschrift, die angibt wie so eine funktion zu berechnen ist (so glaube ich zumindest mich erinnern zu können), wo is da jetzt der signifikante unterschied für mein problem?

      aber selbst wenn die ip mit einberechnet wird, was, wenn zwei studenten einer uni über den gleichen proxy gehen?
      dann is das REMOTE_ADDR was session_create_id abfragt ja auch identisch, dann noch ein multiprozessorsystem auf dem server und ein dummer zufall und die k**ke is am dampfen oder?

      wie wahrscheinlich is sowas denn?
      da muss es doch irgendwo schon diskussionen drüber gegeben haben oder nich?
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Wenn Du der generierten Session-Id nicht traust kannst Du ja Deine eigene kreieren ...
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          weiß ich doch mein gutster

          dadrum geht's mir aber nicht

          angenommen du hättest mit benutzerverwaltung zu tun und müsstest jetzt jemandem präsentieren, was für möglichkeiten ASP, JSP und PHP bieten, wäre dann %uale sicherheit, dass eine session-id eindeutig is nicht von interesse?

          wenn es bei php unwahrscheinlicher is, dass ne session-id doppelt erzeugt wird als bei ASp wäre das ein punkt für php, anderenfalls einer für ASP

          also: hat da jemand was an infos?

          P.S.
          ich weiß, dass ich meine eigene id kreieren kann und da die mondphase, die uhrzeit, die ip, den belegten platz auf dem server, die schuhgröße und alles was die tollen superglobales mir bieten einbeziehen kann, aber das macht ein normalsterblicher programmierer denke ich nicht
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Soweit ich mich erinere muss ein Algorithmus bei gleicher Eingabe immer die gleiche Ausgabe liefern.

            aber mir fällt auf beim genauen hinsehen werden Zeit, IP und Zufallszahlen für die Session-ID verwendet.

            Im Prinzip sind die folgnenden 2 Zeilen für die SIDs am wichtigsten:
            Code:
            633         sprintf(buf, "%.15s%ld%ld%0.8f", remote_addr ? remote_addr : "", 
            634                         tv.tv_sec, tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
            remote_addr is die IP-Adresse
            tv ist Datum / Zeit
            php_combined_lcg erzeugt Zufallszahlen

            P.S:
            ich rede immer noch von dieser Fkt:
            http://lxr.php.net/source/php-src/ex.../session.c#606
            k.a. was du für nen Source hast
            hopka.net!

            Kommentar


            • #7
              Original geschrieben von Hopka
              Soweit ich mich erinere muss ein Algorithmus bei gleicher Eingabe immer die gleiche Ausgabe liefern.
              richtig

              f(x) = 2*x + 45

              ist sowas, aber trotzdem ist die funktion etwas, nämlich die zuordnung von x-werten zu y-werten und der algorithmus tut etwas, nämlich beschreiben, wie diese zuordnung genau vorzunehmen ist; kleiner und feiner, aber nicht relevanter unterschied, daher versteh ich auch deine aussage warum ne funktion sicherer ist als ein algorithmus nicht

              ip, zeit und zufallszahlen sind ja die eingaben, auch wenn sie nicht als parameter an die funktion übergeben werden
              aber mir fällt auf beim genauen hinsehen werden Zeit, IP und Zufallszahlen für die Session-ID verwendet.
              weiß ich doch, hab mir deine funktion ja auch angeschaut *g*
              remote_addr is die IP-Adresse
              die bei nem proxy für jeden gleich is, s. o.
              tv ist Datum / Zeit
              hatten wir schon, s. o.
              php_combined_lcg erzeugt Zufallszahlen
              basierend auf?
              der zeit denke ich, aber so ganz schlau geworden bin ich aus dem präprozessormakro-funktions-mischmasch nicht auf anhieb


              aber trotzdem danke für deine mühen
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                naja, wenn man die zufallszahlen usw. als eingaben betrachtet, kann man es schon Algorithmus nennen, ist im Prinzip aber auch egal. Ich hatte nur irgendwie im Kopf, dass ein Algorithmus keine zufälligen Werte zurückliefern kann, aber irgendwie stimmt das nicht wirklich wenn man nochma drüber nachdenkt.

                Original geschrieben von mrhappiness
                der zeit denke ich, aber so ganz schlau geworden bin ich aus dem präprozessormakro-funktions-mischmasch nicht auf anhieb
                ich auch nicht

                Vergleichen kann man die verschiedenen Sprachen wohl nur, indem man ganz viele Session-IDs erzeugt und guckt, wie oft doppelte auftauchen.
                hopka.net!

                Kommentar


                • #9
                  Original geschrieben von Hopka
                  wenn man die zufallszahlen usw. als eingaben betrachtet
                  die sind variabel oder?
                  was sollen sie denn sonst sein?
                  Vergleichen kann man die verschiedenen Sprachen wohl nur, indem man ganz viele Session-IDs erzeugt und guckt, wie oft doppelte auftauchen.
                  kann ich dir was von deiner zeit abkaufen?

                  aber wenn du nicht weißt, wo ich sowas finde (wie wird ne session-id eigentlich bei ASP oder JSP generiert?), muss ich wohl darauf hoffen, dass ein anderer sowas mal gesehen hat, ich find nämlich nix

                  danke nochmal
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    bist du eigentlich schon mal auf die idee gekommen auszuprobieren, ob die doppelte vergabe überhaupt möglch ist? der ansatz "was passiert, wenn 2 user eine sid haben?" dürfte dich wenigstens schrittweise voran bringen
                    h.a.n.d.
                    Schmalle

                    http://impressed.by
                    http://blog.schmalenberger.it



                    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                    ... nur ohne :-)

                    Kommentar


                    • #11
                      wenn 2 User die gleiche SID haben, haben beide User die gleichen Session-Daten.

                      oder aber PHP merkt, dass es die Session, die es zu erstellen versucht schon gibt und generiert eine neue Session-ID.
                      hopka.net!

                      Kommentar


                      • #12
                        wenn du mir nen link gibst, in dem deine session-id steht und ich klick dadrauf, dann bin ich als du eingeloggt
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          das hat aber nix damit zu tun, dass irgendwo 2 gleiche Session-IDs erzeugt werden. Das 2 Leute die gleiche Session-ID verwenden kann man Serverseitig nicht abfangen.
                          Allerdings kann man, wenn man eine Session-ID generiert, prüfen ob diese schon vergeben ist, und gegebenenfalls eine neue erzeugen.
                          hopka.net!

                          Kommentar


                          • #14
                            Original geschrieben von Hopka
                            Allerdings kann man, wenn man eine Session-ID generiert, prüfen ob diese schon vergeben ist, und gegebenenfalls eine neue erzeugen.
                            ja, aber php macht das nicht von haus aus, mir geht's aber um das "von haus aus"

                            was ich wissen will ist:
                            wenn session_create_id für mich eine session-id 1234578abcd1234578abcd1234578abc generiert, wie wahrsheinlich ist es dann, dass jemand anders ebenfalls 1234578abcd1234578abcd1234578abc als session-id bekommt?

                            unabhängig davon, was der programmierer da noch zusätzlich an schutzmaßnahmen einbauen kann
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              grundsätzlich kann man das doppelte vergeben einer SID vernachlässigen.

                              die möglichkeit, das es eine sid doppelt geben kann ist zwar vorhanden, aber die wahrscheinlichkeit ist eher arg gering.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X