SID in URL oder nicht ???

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SID in URL oder nicht ???

    Tach allerseits,

    also trotz langen Suchens hab ich dennoch keine Problemlösung gefunden. Es geht um folgendes. Ich will eine SessionID nutzen und will die gegen alle Eventualitäten schützen. Das heißt, wenn der Besucher keine Cookies zulässt soll die SessionID trotzdem übertragen werden. Nun folgendes: in einem Buch( "PHP5" von Matthias Kannengiesser) habe ich gelesen, für diesen Fall soll man nach der Generieirung der Session ID durch session_id() an die URL einfach die drei Buchstaben SID anhängen, also z.B.
    Code:
    echo "http://www.testmann.de/index.php?Seite=bla".SID
    Ich hab die Ausgabe von SID mal getestet, der Inhalt ist mir also klar und bedarf keiner Erklärung. Nun habe ich aber beobachtet, dass die SessionID sowieso schon immer an die URL angehängt wird, wenn Cookies nicht zugelassen werden. Also ganz unabhängig davon, ob ich da SID oder nicht hinter die URL schreiben. Bzw. ich hab es noch gar nicht probiert SID hinten dran zu schreiben, weil mir ja aufgefallen ist, dass sie eh angehängt wird. Woran liegt das nun, dass im Buch empfohlen wird SID anzuhängen ? Ist das dann nicht doppelt gemoppelt ? Wie wichtig ist das SID ? Das Buch, was ich gelesen habe ist zu PHP5, also kann es auch nicht an neuen Versionen oder so liegen. Im Internet finde ich nichts, was mir diese Frage eindeutig klärt.
    Zweite Frage: Empfiehlt sich das Anlegen von Cookies durch setcookie(..) überhaupt, wenn man nur die SessionID darin speichern will, denn scheinbar wird ja eh schon automatisch ein Cookie generiert. Oder dienen Cookies nur dazu ZUSÄTZLICHE Infos dort einzutragen ?
    Dritte Frage: Wie ist das mit der Kompatibilität von SessionID's ? Ich hab schon gehört, dass bei manchen Systemen die SessionID verloren gehen kann ? Woran liegt sowas und wie kann man dem vorbeugen ?
    Vierte Frage: Ich hab etwas von BenutzerID's in diesem schon oben erwähnten Buch gelesen, die man mit uniqid() oder noch besser mit md5 (uniqid("")) und rand() generiert. Hierdurch werden auch 32-Zeichen-ID's generiert. Im Buch steht das im Zusammenhang mit Session-ID/PHPSESSID. Kann mir jemand erklären, wie man diese generierte Zahl als Session-ID nutzen kann und wieso man sie nutzen sollte, wenn session_id() sowieso welche automatisch generiert ?

  • #2
    Salut

    Woran liegt das nun, dass im Buch empfohlen wird SID anzuhängen ?
    Weil der Schreiber des Buches nicht wissen kann wie genau dein PHP konfiguriert ist und er daher davon ausgeht, dass die Session von Hand angehängt werden sollte.
    Schau mal mittels phpinfo() bei dir auf dem Server und suche nach
    --enable-trans-sid

    Wenn diese Option aktiviert ist, dann wird die Session ID automatisch an jeden Link innerhalb deiner Domain angehängt.

    PHP-Code:
    echo "http://www.testmann.de/index.php?Seite=bla".SID 
    Wenn du den genau diesen Code probierst, dann sollte dir eigentlich ein Fehler bezüglich nicht erlaubter Zeichen in der SID ausgegeben werden. Wenn immer du etwas im QUERY_STRING an den Server schickst, dann solltest du diese Form verwenden:
    PHP-Code:
    echo "http://www.testmann.de/index.php?seite=bla&".SID
    Einzelne "Abschnitte" im QUERY_STRING müssen mittels & verbunden werden. Dafür solltest du amp; verwenden, ausser du sendest einen Header Location dann nur & (ohne amp

    Mit den Cookies ist das ne Geschmacksache. Du solltest dich auf jeden Fall nicht voll und ganz darauf verlassen, denn diese können deakitiviert sein. Daher verzichte ich ganz darauf und gebe die Session immer in der Anfrage weiter.

    Gruss

    tobi

    p.s. natürlich musst du vor amp; noch das Kaufmannsund setzen
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Original geschrieben von jahlives


      --enable-trans-sid

      Wenn diese Option aktiviert ist, dann wird die Session ID automatisch an jeden Link innerhalb deiner Domain angehängt.
      stimmt nicht ganz, php unterscheidet immer noch zwischen relative und absolute Pfade ob es die sessionuri selbst dranhängt.

      zu empfehlen ist absolute pfade zu verwenden und die sessionuri selbst dran zu hängen.
      mfg
      marc75

      <Platz für anderes>

      Kommentar


      • #4
        Original geschrieben von marc75
        zu empfehlen ist absolute pfade zu verwenden und die sessionuri selbst dran zu hängen.
        Warum?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Schau mal mittels phpinfo() bei dir auf dem Server und suche nach
          --enable-trans-sid

          Wenn diese Option aktiviert ist, dann wird die Session ID automatisch an jeden Link innerhalb deiner Domain angehängt.
          Ja, da werd ich heut nachmittag mal nach schauen (bin gerade bei der Arbeit), allerdings wird da sicherlich enable-trans-sid drin stehen, denn es wird ja witzigerweise an alle URL dran gehängt, ohne dass ich SID da hin schreibe. Allerdings sind das alles relative Pfade, also z.B. <a href="test.php?Seite=Testseite">...</a>, und es wird scheinbar immer angehängt. Übrigens: das &-Zeichen in meinem Codeschnipsel hatte ich vergessen, ich weiß wie das Prinzip ist. Dennoch danke.

          Ok, also wenn nun das SID scheinbar ohne mein Zutun dran gehängt wird, kann ich das also ohne schlechtes Gewissen in Zukunft weg lassen oder empfiehlt es sich das trotzdem anzuhängen ?? Ich meine, dann ist es eigentlich doppelt gemoppelt, oder ? Dann müsste er eigentlich zweimal die SessionID ranhängen, oder ? Das muss ich heut nachmitttag gleich mal ausprobieren.

          Kommentar


          • #6
            Original geschrieben von mrhappiness
            Warum?
            weil, wenn man sich auf enable-trans-sid verlässt, man schnell verlassen sein kann.

            1. man kann nicht voraussetzen, das es Überall ON ist
            2. wenn ein Provider mal die php Version aktualisiert, kann es schon mal vorkommen das es von on auf off gestellt wird. (z.B. letztes Jahr bei 1und1 geschehen).
            3. da fällt mir jetzt nix ein, ausser bei transsid off soll php schneller sein.
            mfg
            marc75

            <Platz für anderes>

            Kommentar


            • #7
              Original geschrieben von marc75
              3. da fällt mir jetzt nix ein, ausser bei transsid off soll php schneller sein.
              Es IST schneller, weil es nicht erst die Ausgabe nach Links durchwühlen muss wo ggf. was angehängt werden muss....dafür ist es bei bereits bestehenden Skripten einfacher einzufügen *schulter zuck*

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Also, Männer, was genau empfehlt Ihr mir nun ? SID dran hängen oder nicht ? Wie soll ichs machen ? Ich bin nun wie gesagt bei der Arbeit, kann nix in der phpinfo() nachschauen, aber die ID wird angehängt, auch wenn ich nix von SID irgendwo im Script anhänge. Dann wird wohl enable-trans-sid angeschaltet sein, oder ? Wenn das nun angehängt wird und enable-trans-sid on ist, kann ich mich dann drauf verlassen, dass die ID wirklich immer angehängt wird, wenn keine Cookies zugelassen werden ? Natürlich vorausgesetzt, der Provider lässt das so (was ich ja mal nachfragen kann).

                Kommentar


                • #9
                  Original geschrieben von Trompetenkäfer
                  Wenn das nun angehängt wird und enable-trans-sid on ist, kann ich mich dann drauf verlassen, dass die ID wirklich immer angehängt wird, wenn keine Cookies zugelassen werden ? Natürlich vorausgesetzt, der Provider lässt das so (was ich ja mal nachfragen kann).
                  Es werden nur an den relativen Links angehängt, an absoluten nicht. Wenn du ganz sicher sein willst:

                  - entweder immer manuell anhängen, egal ob es sich um relativen oder absoluten Links handelt,
                  - oder User dazu zwingen, Cookie zu akzeptieren (was nicht üblich ist)

                  Kommentar


                  • #10
                    So, liebe Leute, nun hab ich das hier mal alles studiert und stell gerade fest, dass mich das nur zum Teil weiterbringt, denn ich brauch eine absolut sichere Sache, es soll nämlich langfristig ein E-Shop werden, was ich da gerade programmiere. Ich hab mal bei amazon getestet. Die benutzen Cookies UND noch irgendwas anderes, denn auch bei Verweigerung der Cookies funktioniert der Shop. Was würdet Ihr mir empfehlen ?

                    Kommentar


                    • #11
                      Original geschrieben von Trompetenkäfer
                      Was würdet Ihr mir empfehlen ?
                      das hier gesagte aufnehmen, und verstehen - und dann deine entscheidung treffen, was du brauchst.

                      amazon kocht auch nur mit wasser, die schleifen auch einfach nur eine session-id im URL mit.


                      und ob jemand mit deinem kenntnisstand wirklich schon einen "e-shop" programmieren sollte, da möchte ich doch mal bedenken anmelden.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Ach naja, ich überspitze meine fragen hier etwas um einfach mehr infos zu bekommen. ganz so unerfahren bin ich sicher nicht.
                        aber prinzipiell ist das nicht so ganz einfach alles möglich bei amazon nur mit sessionid's, denn wenn ich während des kaufvorganges die url mitsessionid kopiere und einem freund schicke, dann müsste er ja die anzeige bekommen mit den dingen im warenkorb, die ich ausgewählt habe. es sei denn ich lösche sofort die sessionid aus der datenbank, wenn der browser schließt, aber wie geht das ? dass die sessionid beim schließen des browsers verfällt ist klar, aber wie lass ich sie parallel dazu auch ind er datenbank verfallen ???
                        Zuletzt geändert von Trompetenkäfer; 08.02.2005, 11:26.

                        Kommentar


                        • #13
                          du könntest mehrere sachen machen :

                          speicher die sessionid mit der ip zusammen,
                          wenn die sessionid mit einer anderen ip aufgerufen wird,
                          lösche die session ...
                          (kann nur probleme mit einigen usern geben)

                          sonst setz die session lebenszeit in der php.ini runter ...
                          oder speicher in einem cookie noch einen zufälligen werd und speicher diesen ebenfalls in der db ...
                          wenn sessionid und cookiewert nicht übereinstimmen dann kille die session ....

                          etc.

                          gruss
                          iglo

                          Kommentar


                          • #14
                            Nett, dass Du Dich bemühst, aber beides ist nicht perfekt. Denn was wenn da jemand permanent seine IP ändert, so wie es bei manchen Providern geschieht ? Und was wenn derjenige keien Cookies annimmt ? Also beide Versionen haben Schwächen. Das ist die Kacke. Aber trotzdem danke !!!

                            Kommentar


                            • #15
                              hmmm ....

                              also der einzige nennenswerte provider bei dem dies geschah/geschieht ist glaub ich AOL ...

                              und wenn cookies rausfallen , dein argument ist ja korrekt, dann bleibt nicht mehr viel ...

                              wenn du starke bedenken hast, mach es doch wie amazon, sobald man bestellt, muss man das passwort eingeben ...

                              Kommentar

                              Lädt...
                              X