Tom: vorläufiges Ergebnis: Sicheres Arbeiten mit Sessions / Login

Beitrag lesen

Hello,

Vielen Dank an alle für die Antworten. Ich schreibe mal kurz zusammen, was für mich dabei rausgekommen ist. Vielleicht auch dann als brauchbare Hilfestellung für Archiv-Suchende ;)

Mein Login-System sieht dann im Großen und Ganzen so aus:

Anmeldung
  1. Überprüft Passwort auf Sicherheit. Gibt ggf. hilfreiche Tipps, lässt aber im Prinzip alles zu
  2. Speichert Benutzername/Passwort in Datenbank. Passwort als Hash in der Form: $hash = hash("sha512", md5($username).$password);

Dabei sollte auf dem Usernamen ein Unique Index liegen, damit der nicht doppelt eingetragen werden kann.

Login-Script
  1. Überprüft den Benutzernamen
  2. Erstellt den Hash und überprüft ihn mit der Datenbank

Zusammenfassen ^ zu einem Query

  1. Überprüft ob Cookies aktiv sind, gibt sonst Warnung aus
  2. Startet die Session und legt Variablen an: "CheckLogin"=TRUE, "IP-Addr", "Zugangsrechte"
  3. Überprüft Anzahl der zuvor gescheiterten Logins. Gibt ggf. Warnung aus.

Schritt 1, 2 und 5 müssen möglichst in einem gemeinsamen Query durchgeführt werden. Dafür kannst Du bei MySQL ein Update Select() nehmen, dass die Selectdaten in benutzerdefinierten Variablen hinterlässt. Diese können dann gleich anschließend abgeholt werden.

Diese Vorgehensweise ist quasi-atomar, weil Variablen für jede Connection getrennt geführt werden und innerhalb EINES Queries abgerufen wurden.

Prüf-Script ##### (zu Beginn eines jeden Seitenaufrufs)
  1. Überprüft, ob "CheckLogin"=TRUE
  2. Überprüft, ob IP unverändert: substr("IP-Add",0,strlen("IP-Addr")-3) für AOL-Nutzer
  3. Überprüft, ob letzte Aktivität älter als 30min => Logout
  4. Setzt letzte Aktivität auf aktuelle Zeit
  5. Aktualisiert "Zugangsrechte" aus Datenbank
  6. Weist neue SessionID zu (session_regenerate_id())

Hoffe, das jetzt alles "richtig" auf der Reihe zu haben. :-)

Trenne Authentifizierung und Legitimation in (mindestens) zwei Tabellen auf.

Sorge dafür, dass Du keine Query-Stacks baust, die nicht atomar gebunden sind.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de