sichere Session Authentifizierung

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

  • sichere Session Authentifizierung

    Ich möchte ein paar Ideen sammeln, was man noch machen könnte um seine Authentifizierung sicherer zu bekommen.

    Benötigt in den Scripten sind:
    userid und login-status.

    Szenario:
    Man soll auf shared servern (also ein server wo andere personen zugriff auf das /tmp directory haben und somit sessions lesen können) keine passwörter in der session speichern.

    Der Benutzer soll über mehrere Seiten hinweg eingeloggt bleiben. (versteht sich von selbst).

    Ich würde jetzt eine Loginseite erstellen, wo der Benutzer seinen namen/email und sein Passwort eingibt.
    Das Passwort und der Username werden mit den daten in der datenbank verglichen (md5).

    ein objekt in dem die userid und der loginstatus gespeichert sind, wird in der session abgelegt (serialized).
    wenn wir jetzt auf die nächste seite gehen, wird das objekt aus der session unserialized und kann wieder benutzt werden.


    noch eine zusatzfrage:
    wenn ich einen user über eine längere zeit hinweg eingeloggt lassen will, kann ich das ja nur mit cookies lösen.
    was spricht dagegen, benutzername und passwort zu diesem zweck in einem cookie zu speichern?

  • #2
    Indem Du den Konfigurations-Parameter "session.save_path" auf ein anderes Verzeichnis umbiegst (mit Schreibzugriff für den Webserver) kannst du den Zugriff anderer zumindest erschweren ...

    Setzt Du "session.save_handler" auf "user" ... kannst Du einen eigenen Save-Handler mit bool session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc) setzen ... und Die Daten entweder ver-/entschlüsseln ... oder diese z.B. in eine Datenbank speichern ... !

    Konfigurations-Parameter setzt man übrigens mit ini_set() ...

    zur Zusatzfrage ... Ja ... und dagegen spricht das jeder Benutzer des Client-Systems theoretisch die Cookie-Datei auslesen kann ... da viele Benutzer immer wieder gleiche Kennwort verwenden kann das ärgerlich sein ... besser wäre es eine generierte ID im Cookie und in der DB (mit BenutzerID) zu speichern und auf diesem Wege ein Relogin durchzuführen ... !
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      ich gehe beim programmieren immer davon aus, keinen zugriff auf die serverconfiguration zu haben.

      das erzeugt meist besseren code, als wenn man sich alles einstellen muss.

      Kommentar


      • #4
        Ich hab's bereits mehrfach hier erwähnt ... mach was Du willst ... ich habe absolut keine Lust meine Zeit an Trolls und "Klug"-schwätzer zu verwenden ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          dann poste doch einfach gar nicht.,

          der wille zu helfen ist zwar nett, aber so wie du es hier tust einfach nicht von nutzen.
          und das basiere ich nicht nur auf diesem thread, sondern auch auf anderen posts von dir.

          Kommentar


          • #6
            @rythms: das problem ist nicht, dass hier nicht geholfen wurde, sondern das wie leider immer wieder mal gefragt wird, ein Ansatz kommt und der dann für den Fragesteller nicht der richtige zu sein scheint...

            mal nicht auf den Thread bezogen sondern allgemein stelle ich mir manchmal ehrlich gesagt folgende Frage:
            Wieso fragen manche leute, wenn sie es dann anscheinend doch besser wissen?

            Kommentar


            • #7
              Weils 'ne Dummschwätzende Trollnase ist ... !
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                Newbie-Frage zu Session in PHP:

                bisher kenne ich Session in ASP, d.h. es wird im Cookies beim Client nur die SessionID abgelegt, alles andere bleiben auf dem Server. Wird das nicht bei PHP auch so gehandhabt ? IMHO doch ... (oder nicht )

                Kommentar


                • #9
                  Ja ... entweder wird die ID in 'nem cookie gespeichert ... oder als Parameter über geben ... ASP(.NET) macht das mit 'nem Unterverzeichnis in geschweiften Klammern ... was ich für unschöner aber effektiver halte ...
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    was MS macht ist sowieso ein Kapitel für sich

                    Zurück zu Session:
                    Dann verstehe ich die Sorge nicht. Die SessionID wird bei jeder Sitzung
                    neu erstellt, also kann doch egal sein, ob man Temp-Verzeichnis auf dem
                    lokalen Rechner auslesen kann oder nicht. Übrigens DAS ist auch der
                    entscheidende Vorteil von Session gegenüber dem reinen Cookies.

                    Kommentar


                    • #11
                      Nein ... es geht darum das Dateien die vom Webserver ins /tmp geschrieben werden, von jedem anderen Webserver-Prozess ausgelesen werden können ... schreibt nun jemand ein Script das alle mit sess_ beginnenden Dateien aus dem /tmp Verzeichnis ausliest ... könnte er u.U. nach benutzernamen oder kennworten oder benutzerid's suchen ...

                      Allerdings hätte er ja auch die Möglichkeit ein Spy-Script zu schreiben das die für den Webserver erreichbare Verzeichnis-Struktur durchsucht ... was man durch eine entsprechende Konfigurations des Webserver zumindest teilweise verhindern kann ...

                      Ich persönlich halte deshalb nach wie vor den Weg des überschreibens des Sessionhandlers für den besten, weil ich wie bereits erwähnt entweder die Daten vor dem schreiben verschlüsseln kann ... oder diese gleich in einen nicht so leicht erreichbaren Bereich (Datenbank) schreibe ...

                      ... einen sichereren Weg soll der Troll mir mal zeigen ... !

                      Original geschrieben von asp2php
                      was MS macht ist sowieso ein Kapitel für sich
                      Also ... ich bastel ganz gerne mal mit .NET ... außerdem ist ein bereich in dem man noch ganz gute Stundensätze bekommt ...
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        Ah ja, ...
                        die Daten in einer temporäre DB-Tabelle schreiben, finde ich immer noch als sicherstens. Der Nachteil ist ja nur dass es aufwendiger ist.

                        Original geschrieben von goth

                        Also ... ich bastel ganz gerne mal mit .NET ... außerdem ist ein bereich in dem man noch ganz gute Stundensätze bekommt ...
                        ... und ich lebe davon

                        Kommentar


                        • #13
                          Original geschrieben von asp2php
                          ... und ich lebe davon
                          Ich unter anderem auch ...
                          carpe noctem

                          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                          Kommentar


                          • #14
                            @Mortalan: ich hab lediglich gesagt, dass der ansatz für mich nicht in frage kommt.

                            der ansatz "mir passt was nicht also änder ich es schlichtweg einfach ab" gefällt mir generell nicht (beim programmieren mit php).

                            @goth: gelöst ist es jetzt so, dass die klasse ein serialisiertes objekt in der session ablegt.
                            enthalten in dem objekt sind nur userid, loginstatus und username.

                            bei einem aufruf der klasse wird als erstes versucht, das objekt aus der session zu serialisieren (falls vorhanden) und die eigenschaften zu übernehmen.
                            wenn das fehlschlägt wird in den request vars nach logininformationen gesucht.

                            wenn die variablen gefunden werden, werden sie mit der db verglichen, und der user gegebenenfalls eingeloggt, daraufhin wird das serialisierte objekt in der session abgelegt.

                            wenn kein login möglich ist, wird ein anonymes objekt in der session abgelegt.


                            mit dieser lösung vermeide ich es, passwörter für andere zugänglich zu speichern und habe einen sicheren login.

                            warum man sich wegen abweisen einer vorgeschlagenen methode gleich beschimpfen muss, verstehe ich nicht. vielleicht solltest du, auch wenn du sicherlich schon länger hier, bist deinen umgangston nochmal überdenken.
                            dennoch, danke für deine mühe und das heraussuchen der funktion.
                            Zuletzt geändert von rythms; 18.03.2004, 20:00.

                            Kommentar


                            • #15
                              ein Password würde doch nur wirklich niemand in der Session speichern!!!

                              Letztlich bleibt folgendes Problem:

                              Ein User der eine Datei aus auslesen kann auch eine neue Session - Datei erstellen kann ... bzw. eine alte kopieren ...

                              PS.: Ein Object brauchst Du nicht manuell zu serialisieren ... das geschieht vollkommen automatisch wenn Du ein ein objekt in 'ner Session speicherst ... letztlich ist aber auch das Serialisierungformat kein Buch mit 7 Siegel ... sondern sogar relativ einfach zu lesen ... !

                              Genaugenommen würde es bereits vollkommen ausreichen sämmtliche SessionID's die ich im /tmp finde mit Deinen Scripten durchzuprobieren ...
                              Zuletzt geändert von goth; 19.03.2004, 00:36.
                              carpe noctem

                              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                              Kommentar

                              Lädt...
                              X