autologin die 6542te

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • autologin die 6542te

    hi!

    hab mir jetzt mal die meisten autologin threads hier im forum durchgelesen. die rede ist meist davon, den usernamen und einen md5 hash des passwortes in einem cookie zu speichern und dieses dann beim seitenaufruf mit den einträgen in der datenbank zu vergleichen.

    macht das einen bruteforce ansatz nicht noch einfacher, wenn man das cookie in die hände kriegt? momentan sperr ich einen account für 10 minuten, wenn 5 mal ein falsches passwort eingegeben wurde um eben diesen bruteforce methoden vorzubeugen.

    gibts noch andere ansätze? evt. einen hash der letzten session id, die ich im moment als anhaltspunkt nehme, ob ein user eingeloggt ist, oder nicht: session id vorhanden: user ist eingeloggt, oder hat sich nicht sauber ausgeloggt. session id nicht vorhanden, user ist definitiv ausgeloggt.

    falls ein user den browser nur schließt ohne sich auszuloggen, bleibt die session id in der db gespeichert. wenn sich ein user einloggt, wird die session id in die db geschrieben und kann gleichzeitig auch ins cookie als md5 hash geschrieben werden.

    beim login würde dann nach der gespeicherten session id gesucht werden. wird sie gefunden, wird die gespeicherte session id durch die aktuelle ersetzt und der user ist eingeloggt.

    wäre das ein brauchbares ansatz für die praxis? wie könnte man verhindern, dass ein user nicht einfach das cookie eines anderen nimmt, es in sein eigenes verzeichnis kopiert und sich damit einlogt?

  • #2
    Re: autologin die 6542te

    Original geschrieben von php_rookie
    beim login würde dann nach der gespeicherten session id gesucht werden. wird sie gefunden, wird die gespeicherte session id durch die aktuelle ersetzt und der user ist eingeloggt.
    d. h. du willst keine "Who is online"-Liste?
    du kannst die session-id bei den usern dann ja nicht auf NULL oder sonstwas ändern, für dein system wären die dann immer online...
    wie könnte man verhindern, dass ein user nicht einfach das cookie eines anderen nimmt, es in sein eigenes verzeichnis kopiert und sich damit einlogt?
    gar nicht
    Ich denke, also bin ich. - Einige sind trotzdem...

    Comment


    • #3
      du kannst die session-id bei den usern dann ja nicht auf NULL oder sonstwas ändern, für dein system wären die dann immer online...
      die session id wird in deinem login-system, das ich auch verwende, ohnehin nur auf NULL gesetzt, wenn sich der user ausloggt. andernfalls bleibt die session id im system enthalten. und genau das nehm ich als anhaltspunkt dafür, dass sich der user nicht abgemeldet hat. wenn dann auch noch ein cookie mit dem md5 hash der session id gespeichert ist und diese mit der in der db gespeicherten session id übereinstimmt, kann sich der benutzer einloggen ohne ein passwort eingeben zu müssen.

      weist dieser ansatz lücken auf?

      eine "who is online" funktion lässt sich nur in verbindung mit session ids eh nicht realisieren, ohne z.b. einen zeitpunkt der letzten aktion. seh ich das falsch?

      Comment


      • #4
        lücke insofern, dass du dir ne dahingehende erweiterung unmöglich machst
        Ich denke, also bin ich. - Einige sind trotzdem...

        Comment


        • #5
          d. h. du willst keine "Who is online"-Liste?
          du kannst die session-id bei den usern dann ja nicht auf NULL oder sonstwas ändern
          wie ändert man die session id auf NULL, wenn der benutzer nur den browser schließt?

          Comment


          • #6
            schau mal bei den fragen zu den tutorials, da steht das und zwar mehr als einmal *g*
            Ich denke, also bin ich. - Einige sind trotzdem...

            Comment


            • #7
              du erweiterst die tabelle um eine neue spalte vom type datetime und nennst sie lastaction

              bastel dir ne neue funktion logout_idle()

              in dieser funktion setzt du als allererstes mit UPDATE die spalte UserSession auf NULL, wo lastaction weiter als eine von dir definierte zeitspanne zurückliegt

              danach setzt die den wert der spalte lastaction auf NOW() und zwar da, wo in der spalte UserSession die akteuielle session-id drinsteht

              in der funktion logged_in() rufst du vor dem momentan stehenden code die funktion logout_idle auf
              falls du den beitrag meinst, den hab ich schon gelesen. jeder seitenaufruf setzt also die session ids auf NULL, wenn wie z.b. 10 minuten nicht benutzt wurden. der benutzter ist dann ausgeloggt. nur was, wenn ein user 10 minuten auf toilette ist, zurückkommt und sich ausgeloggt vorfindet?

              Comment


              • #8
                Original geschrieben von php_rookie
                nur was, wenn ein user 10 minuten auf toilette ist, zurückkommt und sich ausgeloggt vorfindet?
                man kann's nicht allen recht machen, das leben ist kein wunschkonzert

                du kannst die zeit ja hochschrauben
                Ich denke, also bin ich. - Einige sind trotzdem...

                Comment


                • #9
                  wie kommt es, dass foren wie wwwthreads (z.b. das auf sms.at) den onlinestatus nahezu perfekt wiedergeben? auch wenn der benutzer nur das browserfenster schließt?

                  Comment

                  Working...
                  X