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