Sicheren Autologin erstellen
Christian Altmann
- php
0 Beat0 EKKi0 Bademeister0 Christian Altmann0 EKKi
Hallo,
aktuell speichere ich für den Autologin die UserID sowie das Passwort als MD5 in einem Cookie.
Angeblich ist das aber nicht gerade sicher...
Wie macht man das aber nun "sicherer"?
Thanks!
Hallo,
aktuell speichere ich für den Autologin die UserID sowie das Passwort als MD5 in einem Cookie.
Angeblich ist das aber nicht gerade sicher...
Ist die UserID statisch, kann ich mit dem MD5konvertierten Passwort jederzeit eine fremde Session weiterführen.
Wie macht man das aber nun "sicherer"?
Mit einer SessionID
Userdaten und Passwort haben auf dem Server zu verbleiben.
Das erlaubt immer noch, dass eine Session entführt werden kann, da aber eine Session nur eine beschränkte Lebenszeit hat/haben soll (somit auch die SessionID) kann dies nur für die gegenwärtige Session gelten.
Sicherheit gibt's nur via https oder via aufwändigere Tricks.
mfg Beat
Mahlzeit Christian Altmann,
aktuell speichere ich für den Autologin die UserID sowie das Passwort als MD5 in einem Cookie.
Angeblich ist das aber nicht gerade sicher...
Natürlich nicht. Theoretisch wäre es denkbar, dass jemand, der den Cookie-Wert auslesen könnte, aus dem Inhalt UserID und Passwort rekonstruieren kann.
Wie macht man das aber nun "sicherer"?
Lass das Passwort aus dem MD5 raus, das hat da nichts zu suchen. Lass auch die UserID aus dem MD5 raus, auch die hat dort nichts zu suchen. Speichere stattdessen die SessionID der serverseitigen Session als MD5 in einem Cookie. In der Session speicherst Du dann (auf dem Server!) die UserID und sonstige Informationen, die Du brauchst (z.B. Remote-IP, Datum der letzten Aktion usw.) ... das Passwort hat jedoch auch hier absolut nichts verloren. Das Passwort sollte nur zu einem einzigen Zeitpunkt gebraucht werden: wenn der Benutzer sich mit Benutzerkennung und Passwort einloggt. Und auch hier solltest Du es nicht aus der Datenbank (bzw. der Quelle, wo es gespeichert ist) auslesen und in Deiner Anwendung (PHP-Skript o.ä.) vergleichen, sondern Dir nur die UserID zur vom Benutzer eingegebenen Kombination aus Benutzerkennung und Passwort zurückliefern lassen - wenn keine UserID zurückkommt, waren die Angaben nicht korrekt.
MfG,
EKKi
Hi Christian,
ein Auto-Login ist generell immer weniger sicher, das liegt in der Natur der Sache: der User muss nicht sein Hirn (in dem das Passwort gespeichert ist) bemuehen, sondern alles Noetige weiss bereits sein Computer (d.h. der Browser in dem Fall). D.h. jeder andere, der zu demselben Computer (ggf. als derselbe User) Zugang hat, kann die Zugangsdaten finden und benutzen. Dass sie dabei md5-verschluesselt sind, nuetzt natuerlich ueberhaupt nichts.
Speichere stattdessen die SessionID der serverseitigen Session als MD5 in einem Cookie,
wie Ekki vorgeschlagen hat (Du brauchst auch hier allerdings keinen md5 zu machen).
Das realisiert eben keinen Auto-Login, sondern ermoeglicht nur einen normalen, manuellen Login. Aber wenn Du mehr Sicherheit willst, dann solltest Du von Auto-Logins Abstand nehmen.
Viele Gruesse
der Bademeister
wie Ekki vorgeschlagen hat (Du brauchst auch hier allerdings keinen md5 zu machen).
Ergaenzung: Du darfst das Ding sogar auf keinen Fall md5-verschluesseln, denn sonst ist die Session-ID nun mal weg.
viele Gruesse
der Bademeister
Lass das Passwort aus dem MD5 raus, das hat da nichts zu suchen. Lass auch die UserID aus dem MD5 raus, auch die hat dort nichts zu suchen. Speichere stattdessen die SessionID der serverseitigen Session als MD5 in einem Cookie. In der Session speicherst Du dann (auf dem Server!) die UserID und sonstige Informationen, die Du brauchst (z.B. Remote-IP, Datum der letzten Aktion usw.) ... das Passwort hat jedoch auch hier absolut nichts verloren.
Hallo,
aber wie soll dann der Autologin noch funktionieren?!
Es geht ja hier darum, dass der User sich nach z.B. 3 Tagen nicht nochmals neu einloggen muss...
Mahlzeit Christian Altmann,
aber wie soll dann der Autologin noch funktionieren?!
Gar nicht, da es so, wie Du das offenbar meinst, absolut unsicher ist.
Es geht ja hier darum, dass der User sich nach z.B. 3 Tagen nicht nochmals neu einloggen muss...
... was absolut unsicher ist.
MfG,
EKKi