AdSense

Dienstag, 28. Mai 2013

PHP - Passwort als Hash und nicht als Klartext speichern

(English version) Momentan schreibe ich an einem textbasierten Online-Spiel. Da man sich da ja anmelden kann, muss ich die Passwörter der User speichern. Prinzipiell ist das ja ganz einfach, das Password wird auf dem Server einfach in eine Datei geschrieben, auf die man vom Internet aus keinen Zugriff hat. Das Problem ist jetzt: Was wäre, wenn ein User sein Master-Passwort, welches er auch für Bankkonten und ähnliches benutzt, angibt? Ich könnte mir dann ja das Passwort anschauen und viele Dummheiten damit machen. Daher sollte das Passwort nicht als Klartext gespeichert werden.

Die Lösung für dieses Problem ist die Verwendung von einer Hash-Funktion (http://de.wikipedia.org/wiki/Hash-Funktion). In php funktioniert das folgendermaßen:

$passwort = hash('ripemd160', $passwort);

Ich bekomme von "hash" eine Zahlen- und Buchstabenfolge, die (mit sehr hoher Wahrscheinlichkeit) eindeutig ist. Im php Code wandle ich alle Eingaben des Passwortes sofort um, sodass immer nur mit dem hash-Wert gearbeitet wird (Vergleiche, Abspeichern). Aus diesem Wert kann man jedoch nicht ohne weiteres das Passwort herausfinden, daher nützt es auch überhaupt nichts, wenn jemand den Wert kennt, da dieser ja bei der Eingabe erneut umgewandelt werden würde, was einen komplett anderen Wert zurückgibt. Damit ist es also unmöglich, das Passwort herauszufinden oder zu knacken, da das Passwort nirgends gespeichert wird.

Keine Kommentare:

Kommentar veröffentlichen