Moin
Ach wie gut habens doch jene die auch mal eine Suchmaschine bedienen oder sonstige Doku lesen. Für dich daher hier nochmal der Kurzabriss:
Wenn der User sein Passwort festsetzt jagst du es durch md5 (http://www.php.net/md5) und speicherst den Hash in der Datenbank. Jetzt ist das Passwort verschlüsselt und kann ohne Brute Force nicht wiederhergestellt werden (das ist ein Feature!).
Wenn der User authentifiziert werden soll, jagst du das Passwort durch md5 und vergleichst es mit dem Hash der in der Datenbank steht. Wenn die beiden gleich sind, ist das eingebene Passwort ok und das Skript kann weiterlaufen, wenn nicht, dann ist es nicht ok und das Skript muss tun, was immer es tun muss, wenn das Passwort falsch ist.
Du kannst statt md5 auch crypt (http://www.php.net/crypt) nehmen, aber davon würde ich abraten, weil es nicht ganz so sicher ist.
Erweiterte Möglichkeiten:
- Du verbindest Username und Passwort und speicherst den Hash davon (Passwort _vor_ Username stellen!). Dann sieht ein Angreifer, der Datenbankzugriff erlangt, nichtmal wenn zwei User das gleiche Passwort haben.
- Wenn der User sein Passwort vergessen haben sollte, musst du ein neues Passwort (das alte kann nicht wieder hergestellt werden, das ist ein Feature!) generieren, den Hash davon in einer anderen Spalte der Datenbank sichern (ggbf. noch mit einem Verfallsdatum für das neue Passwort) und ihm das neue Passwort sicher übergeben (etwa per Mail senden). Das neue Passwort ersetzt das alte dann erst wenn der User sich erstmal damit einloggt (einfach rüberkopieren).
--
Henryk Plötz
Grüße aus Berlin