Ankündigung

Einklappen
Keine Ankündigung bisher.

Angemeldet bleiben - beste Technik

Einklappen

Neue Werbung 2019

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

  • Angemeldet bleiben - beste Technik

    Hallo Leute!

    Wie mein Thema schon sagt, suche ich die beste / oder annäherd gute Lösung für eine "Angemeldet bleiben" Login Funktion.

    Weiss jemand vielleicht ein paar gute Tutorials?

    Danke und lg

  • #2
    was, wenn man fragen darf, hat deine eigenrecherche ergeben?

    Kommentar


    • #3
      zB: dieser Thread: http://www.php.de/forum/webentwicklu...wiedererkennen

      Stichwörter sind zB Remember Me Cookie, AutoLogin, ...
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Danke der Link hat mir geholfen

        Kommentar


        • #5
          Wenn du ein richtiges "Angemeldet bleiben"-Funktion möchtest, dann kannst du das relativ einfach über die php.ini mit den Einstellungen [MAN]session.gc_maxlifetime[/MAN] und [MAN]session.cookie_lifetime[/MAN] lösen. Ein Autologin sieht für den Anwendet in vielen fällen sehr ähnlich aus und wird z.B. per Cookie gelöst.

          Jedoch sollte dir bewusst sein, dass je länger eine Session aktiv ist dies auch unsicherer für den Benutzer wird, dass andere Personen ungewollt auf ein fremdes Konto zugreifen können.

          Kommentar


          • #6
            Die beste Lösung? Einfach ein Cookie beim Nutzer setzen mit einer jahrelangen Lebensdauer. Macht Facebook & Co. auch so.

            Kommentar


            • #7
              Nach einigen Recherchen ist anscheinend die Beste Lösung folgende:

              Von http://stackoverflow.com/questions/1...-best-approach
              • Tabelle UserTokens erstellen mit Id, Hash und BenutzerId
              • Wenn sich ein Benutzer einloggt wird ein verschlüsselter Hash mit UserID erstellt
              • Diesen Hash in ein Cookie mit Ablaufdatum schreiben.
              • Datensatz in die AutoLogin Tabelle erstellen mit Benutzer Id (Zuordnung) und Hash


              Wenn der Benutzer zurück auf die Seite kommt (ca einem Tag)
              • Überprüfen ob der Hash + Id in der Datenbanktabelle vorkommt
              • Wenn ja dann einloggen


              Ich hoffe ich hab das so richtig verstanden.
              Nur wenn ein Angreifer das Cookie von Benutzer seinem Browser klaut, dann kommt dieser so undso immer eingeloggt auf die Seite, oder sehe ich da was falsch?

              Kommentar


              • #8
                Tabelle AutoLogin erstellen mit Id, Hash und BenutzerId
                Du könntest den Hash auch in ein Feld in die Usertabelle geben.

                Nur wenn ein Angreifer das Cookie von jemanden seinem Browser klaut, dann kommt dieser so undso immer eingeloggt auf die Seite oder sehe ich da was falasch?
                http://www.php.de/forum/webentwicklu...sion-unüblich
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Zitat von hausl Beitrag anzeigen

                  Du könntest den Hash auch in ein Feld in die Usertabelle geben.
                  Du hast schon recht, aber wenn sich ein Benutzer mit 2 Geräten eingeloggt bleiben möchte, dann funktioniert dies nur mit einer eigenen Tabelle oder?

                  Danke und lg

                  Kommentar


                  • #10
                    Hm, guter Punkt... also auf die Schnelle .. Wenn in beiden Cookies der selbe Hash ist sollte es auch gehen, müsste man beim Login berücksichtign. Kann gerade spontan nicht sagen ob das ev. blöde Auswikrungen hätte..
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Stimmt schon, da aber nach jedem Login der Cookie am Gerät neu mit einem eigenen Hash gesetzt wird, kann es sogesehen nie die Möglichkeit geben das in beiden Cookies der selbe Hash steht.

                      Da man anscheinend gegen das Klauen von Cookies vom Rechner, derzeit nichts unternehmen kann, und dies eigentlich eh recht selten passiert, muss ich das halt so hinnehmen.
                      Andere Webseiten haben schließlich das Selbe Problem.

                      Was ich noch berücksichten muss:
                      Ich werde in der Tabelle, in der die AutoLogin Hashes stehen noch ein Ablaufdatum (das Selbe vom Cookie) reinschreiben und bei jedem Autologin erneuern,
                      so kann ich abgelaufene Datensätze einfacher löschen.

                      Kommentar


                      • #12
                        Das meinte ich mit "muss man beim Login berücksichtigen" ... Dh wenn du dich auf einem neuen Gerät anmeldest und es beim User in der DB schon einen Hash gibt dann muss dieser beim Cookie erstellen verwendet werden. Wenn es keinen Hash gibt, dann einen neuen erzeugen, den beim User speichern und ins Cookie. Aber wie gesagt.. müsste man fertig denken ob es etwaige negative Auswirkungen hat. Vorteil wäre keine eigene Tabelle, Nachteil wenn du den Hash vom User entfernst, bist du auf allen Geräten abgemeldet, individuell pro Gerät die Cookie-Session killen (ausloggen) geht nicht. Dh. wenn du dich irgendwo auf einem Gerät ausloggst ist alles auf anderen Geräten auch ausgeloggt.. . ok ja das klingt dann doch eher nach Nachteil... oder?
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          http://jwt.io/
                          I like cooking my family and my pets.
                          Use commas. Don't be a psycho.
                          [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

                          Kommentar


                          • #14
                            Danke für deine Antwort sogesehen ergeben sich nun 2 Möglichkeiten:

                            1.) Eigene Spalte "Hash" in der Benutzertabelle
                            1. Benutzer loggt sich mit einem Rechner ein
                            2. Ein Hash wird erstellt -> dieser wird in ein Cookie und in die Datenbank Spalte "Hash" geschrieben

                            1. Benutzer loggt sich mit einem Smartphone ein
                            2. Es wird nachgesehen ob ein Hash in der Datenbank vorhanden ist und ob dieser noch gültig (Ablaufdatum) ist
                            3. Dieser Hash wird dann (falls vorhanden) in ein neues Cookie geschrieben


                            Beim erneuten Betreten der Seite wird Cookie und Hash überprüft.

                            Wenn sich der Benutzer ausloggt, dann ist er bei allen Geräten ausgeloggt, da der Hash in der Datenbank Spalte geleert wird.

                            Sogesehen haben dann beider Geräte ein gleiches Cookie mit unterschiedlichen Ablaufdatum.

                            2.) Eigene Tabelle UserHashes erstellen
                            1. Benutzer loggt sich mit einem Rechner ein
                            2. Ein Hash wird erstellt -> dieser wird in ein Cookie und in einem neuen Datensatz UserHashes geschreiben

                            1. Benutzer loggt sich mit einem Smartphone ein
                            2. Ein Hash wird erstellt -> dieser wird in ein Cookie und in einem neuen Datensatz UserHashes geschreiben


                            Beim erneuten Betreten der Seite wird nahgesehen ob der Cookie Hash mit einem Hash von der Tabelle gleich ist.

                            Wenn sich der Benutzer ausloggt, dann ist er nur bei diesem Geräten ausgeloggt, da nur der Datensatz mit dem selben Hash gelöscht wird.

                            Die Frage welche ich mir nun Stelle:

                            Welche Variante ist Sicherheitstechnisch besser?
                            Das ein Benutzer nach dem Logout auf allen Geräten ausgeloggt wird, stört mich nicht.

                            Danke euch, ich hoffe ich hab mich hier Verständlich ausgedrückt

                            Kommentar


                            • #15
                              Ohne die Sicherheit zu betrachten käme für mich so oder so nur Lösung 2 in Frage. Bei deiner 1. Lösung ignorierst du Benutzer, die mehrere Endgeräte verwenden um auf deinen Service zuzugreifen. Du kannst mit Lösung 1 immer nur vom gleichen Endgerät zugreifen - ausser, du nimmst überall den gleichen Hash, was wiederum Humbug wäre.
                              [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                              Kommentar

                              Lädt...
                              X