CIT: (PHP) Qualität meines Login-Systems

Beitrag lesen

Guten Tag,

ich bin CIT und bin durch Empfehlung hier gelandet.

Ich würde euch gerne mein Login-System(in PHP) vorstellen und hoffe ich bekomme reichlich Feedback.

Zur Grundlage:
Die Passwörter sind 2x MD5 Gehasht + Salt in einer MySQL Datenbank
Eine statische Variable $logged = false.

1. Der User gibt in ein Formular seinen Usernamen oder seine E-Mail und danach sein Passwort ein.

2. Danach wird das ganze mit einer MySQL Datenbank abgeglichen.

3. Stimmen die Daten überein passiert folgendes:

  • Die UserID wird ausgelesen

  • Die UserID, die Gültigkeitsdauer und ein Salt werden mit einem Trennzeichen implodiert. Das KOnstrukt sieht Pseudo z.B. so aus: USERID/SALT/EXPIRATION

  • Das Konstrukt wird per MCRYPT Blowfish im CFB-Modus verschlüsselt.

  • Das verschlüsselte Konstrukt wird dann in einem Cookie gespeichert, die Verfallszeit des Cookies ist die, welche auch im Konstrukt steckt.

Die Authentifizierung läuft so ab:

  • Das Cookie wird ausgelesen
  • Das Konstrukt entschlüsselt
  • Ist der Salt der richtige? Wenn ja - okay
  • Ist EXPIRATION < time() ? Wenn nein - okay
  • Ist eine UserID vorhanden? Wenn ja - okay
  • setze die statische Variable $logged = true;[1]
  • setze die statische Variable $uid = UserID;[1]

Was haltet ihr davon, habt ihr noch ein paar Anregungen?
Es ist also ein Cookie-basiertes Login-System.

[1] Falls ihr euch fragt warum eine statische Variable: Manchmal will eine Funktion wissen ob jemand eingeloggt ist oder nicht, da ich somit komplett auf Sessions verzichten kann, tue ich das so.

Lieben Gruß,

CIT