Sessions und SIDs

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

  • Sessions und SIDs

    Hallo alle zusamen!

    Folgendes:
    Ich benutze Sessions nur um die Authentifizierung des Benutzers zu überprüfen. d.h folgendes passiert bei der anmeldung.:

    PHP-Code:
    session_start();
    $_SESSION["User"] = $UserDB;
    $_SESSION["Passwort"] = $PassDB
    Beim Aufruf von verlinkten Seiten überprüfe ich die übergebenen Daten $_SESSION["Passwort"] und $_SESSION["User"] über eine SQL-Abfrage auf Ihre Gültigkeit. --> Funktioniert tadellos.

    Ich weis das ich das auch über die Sessionid machen könnte. -- Ich erkenne (ausser der Einsparung einer Variable und einer SQL-Abfrage) aber nicht die Vorteile der SID-Methode. (wenn ich wirklich nur die Authentität des Benutzer überprüfen will)

    danke für die Aufklärung im Vorhinein,
    Erwin

  • #2
    Wie ist denn deine frage?
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Re: Sessions und SIDs

      wozu willst du jedes mal erneut gegen die DB abfragen, ob die eingegebenen login-daten gültig waren?

      eingabe der daten, abfrage an DB, und dann flag in session setzen, welches erkennen lässt, dass der user sich zuvor ordnungsgemäß authorisiert hat - das ist der gängige weg (und der empfehlenswerte, von sonderfällen mal abgesehen).

      jedes mal die DB abzufragen, ist überflüssig.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Das es überflüssig ist jedesmal die DB abzufragen ist mir klar. (Der Code wurde von mir vor 2 Jahren geschrieben, da hatte ich k.A.)

        Aber wozu ein Flag setzen?
        Ich kann doch zuerst die vom Benutzer eingegebenen Daten mit der DB überprüfen und dann erst falls der Login OK ist die Session starten.
        --> Die Session mit dieser SID ist auf jeden fall OK. --> Kein Flag nötig in Form von $_SESSION["login"]="OK";
        Oder meinst du was anderes mit "Flag setzen"?

        lg,
        Erwin

        Kommentar


        • #5
          jede geschützte seite beginnt i.d.r. mit einem session_start(). dann wird automatisch auch eine session gestartet, falls es bisher nicht schon getan wurde. und eine id hat die session selbstverständlich auch. nur mithilfe eines flags (muss nicht $ok = true sein) lässt sich sicher erkennen, ob diese session jemandem gehört, wer sich erfolgreich angemeldet hat.

          Kommentar


          • #6
            Kommt darauf an was deine Anwendung später noch alles mit den Usern machen soll.
            Bsp:
            Eine Übersicht über eingeloggte User bekommst du am einfachsten wenn du die Session in die DB legst.

            Allerdings möchtest du ja "nur" den Flag fürs Login setzten und somit eine Speicherung der SID unnötig.

            Edit: Da fällt mir doch glatt ein Kosmetik Fehler ein.
            ___

            Mein Problem: Ich habe auf meinem Testumgebung 2 Anwendungen laufen. Unschön aber so gewachsen überprüfen die Scripte auf die gleichen Flags. Sprich wenn mich in die eine Anwendung einlogge, komme ich auch in die 2 Anwendung... sowas könnte man natürlich mit dem ablegen der SID in der DB verhindern. Oder hat jemand ne andere Idee?
            Zuletzt geändert von Ueps; 22.08.2005, 16:09.

            Kommentar


            • #7
              Original geschrieben von Ueps
              Mein Problem: Ich habe auf meinem Testumgebung 2 Anwendungen laufen. Unschön aber so gewachsen überprüfen die Scripte auf die gleichen Flags. Sprich wenn mich in die eine Anwendung einlogge, komme ich auch in die 2 Anwendung... sowas könnte man natürlich mit dem ablegen der SID in der DB verhindern. Oder hat jemand ne andere Idee?
              eindeutige Keys benutzen, oder des Session-Cookies-Domain fester festlegen (sofern die beiden Skripte zwar auf einem Server aber unter unterschiedlichen Domains erreichbar sind...)

              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
                Original geschrieben von penizillin
                jede geschützte seite beginnt i.d.r. mit einem session_start().
                Wozu? I.d.R habe ich doch eine login-Seite; nach der Erfolgreichen Authentifizierung wird eine Session gestartet.
                Jede weitere Seite überprüft die am Client (Cookie) gespeicherte SID mit der am Server gespeicherten SID (session_id()).
                PHP-Code:
                if ($_SESSION["SID"]!=session_id())
                               
                user_exit(); 
                Falls sie nicht übereinstimmen wird das Script beendet.

                Oder sehe ich da was falsch?

                lg, Erwin

                Kommentar


                • #9
                  das array $_SESSION wird ohne session_start() nicht verfügbar sein, afaik.

                  Kommentar


                  • #10
                    Original geschrieben von penizillin
                    das array $_SESSION wird ohne session_start() nicht verfügbar sein, afaik.
                    Doch, das ist es. Aber auch wenn es das nicht wäre, wäre das Array vorhanden weil beim login ja session_start ausgeührt wurde. (es muss nicht für jedes Script eine session_start augeführt werden, das Array und die Session bleiben erhalten auch wenn ein anders script gestartet wird), afaik

                    Oder weis es jemand bestimmt besser?

                    Kommentar


                    • #11
                      http://de2.php.net/manual/en/ref.session.php
                      [...] Also note that you must start your session using session_start() before use of $_SESSION becomes available. [...]
                      und session.auto_start ist standardweise auf 0 gesetzt.

                      Kommentar


                      • #12
                        Original geschrieben von ewitt
                        ...es muss nicht für jedes Script eine session_start augeführt werden..
                        Eigentlich schon.. Es gibt allerdings session.auto_start das is afaik auf 0.. Wenn du das verdreht hast brauchste session_start nicht..

                        EDIT:

                        Siehe ein post höher

                        gruss Chris

                        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                        Kommentar


                        • #13
                          na dann

                          Stimmt...

                          aber es geht mir noch immer nicht ein warum ich unbedingt ein Flag brauche sollte:

                          nur mithilfe eines flags (muss nicht $ok = true sein) lässt sich sicher erkennen, ob diese session jemandem gehört, wer sich erfolgreich angemeldet hat.
                          ... denn $_SESSION["SID"]!=session_id()) lässt sich auch überprüfen wenn ich davor session_start() ausführe. $_SESSION wird ja nicht bei jedem session_start() gelöscht und die SID bleibt auch gleich wenn die Session bereits vorher gestartet wurde oder? Vielleicht ist ja $_SESSION["SID"] das Flag von dem die Rede war? :-)

                          Kommentar


                          • #14
                            Vielleicht ist ja $_SESSION["SID"] das Flag von dem die Rede war? :-)
                            ja, solange die sessionvariable, von der du sprichst, im gesamten system nur in dem fall erstellt wird, wenn sich der user erfolgreich eingeloggt hat.

                            Kommentar


                            • #15
                              da passt, danke!
                              ich wollt mich eigentlich nur Vergewissern wie es um mein Verständniss um die sessions steht.
                              ... alles klar ... jetzt

                              lg,
                              Erwin

                              Kommentar

                              Lädt...
                              X