[PHP/MySQL] sicheres Autologin

27o8

abgemeldet
2 Mai 2006
9.028
933
Wie realisiere ich ein sicheres Auto-Login? Ich möchte also bezwecken das sich ein User einloggt, und er auch noch am nächsten Tag eingeloggt ist, vorausgesetzt er loggt sich nicht aus.

Auf jedenfall würde ich die Userid im Keks speichern. Die alleine wäre jedoch etwas fahrlässig weil man sich als jeder User einloggen kann. Passwort möchte ich auch nicht in die Kekse rein tun, da mir das zu unsicher ist.

Am besten wäre ein, bei jedem Login, zufällig generierter String welchen ich im Keks, und in der Datenbank speichere.

Aber weiß nicht ob das wirklich das wirklich sicher ist. :think:
 
Aber weiß nicht ob das wirklich das wirklich sicher ist. :think:
Besser geht es doch gar nicht, oder? :think:

  • Der primitive Ansatz is: Was ich ins Login-Formular eingeb in den Keks stecken, d.h. UserID+Passwort. Dann steht das Passwort aber im Keks; nicht so gut.
  • Nächste Möglichkeit: Passwort hashen. Rainbow-Tables kriegen das raus, also auch nicht besser als der obere.
  • Weitere: vor dem Hashen das Passwort salzen, gut.
  • Das was du vorschlägst is ja quasi ein immer neues "Passwort", was nur für eine Session gilt und das eigentliche Passwort steht gar nimmer drin.
  • Mir würde nur noch eine Steigerung einfallen: Bei jedem Auto-Login wird der String nochmals geändert, sodass du nicht x Monate lang dasselbe Datum zu deiner UserID zugeordnet hast.
Zusätzlich kannst du Mechanismen einbauen:

  • Einloggen nur von einem Rechner erlauben - wobei das bei dem Entwurf von dir wahrscheinlich eh ein Abfallprodukt des DB-Designs sein wird
  • User-Agent speichern und den User nur mit demselben Browser auto-einloggen. Mir als Besucher wäre das störend, wenn ich Browserupdate mache und bin dann wo ausgeloggt, allerdings beugt es halt einem fremden Einloggen vor.
  • Ganz heavy: IP angucken, versuchen den Hoster rauszukriegen (also mit IP-Ranges arbeitet) und gucken, ob derjenige noch denselben ISP hat, wenn er wieder kommt. Die Chance, dass einer einen Rechner mit Keks drauf an ein fremdes Netzwerk (mit anderem ISP) hängt und sich dort einloggen will, is gering.
 
Die Chance, dass einer einen Rechner mit Keks drauf an ein fremdes Netzwerk (mit anderem ISP) hängt und sich dort einloggen will, is gering.
Da muss ich aber vehement widersprechen:

Ich bin mit meinem Notebook innerhalb einer Woche regelmässig in 4 verschiedenen Netzen mit ganz unterschiedlichen Providern unterwegs.
 
@tleilax:
An solche Leute dachte ich, wie ich "gering" geschrieben hab ;)

Muss man abwägen, ob man es so "sicher" haben muss, um dann möglicherweise einen Teil der User durch ständiges Eingelogge zu verkraulen.
 
Am besten wäre ein, bei jedem Login, zufällig generierter String welchen ich im Keks, und in der Datenbank speichere.

Genauso würde ich das machen. Und dazu noch einen Timestamp in die Datenbank, damit der Autologinkey nach einer gewissen Zeit ungültig wird.

Meine sadistische Ader sagt mir, dass ich einen String nehmen würde, der nach md5 oder sha1 aussieht, damit sich die Leute mit ner Rainbowtable umsonst die Mühe machen :ugly: