2010-10-26 17 views
5

Ich möchte eine Passwort vergessen Funktion für meine Website implementieren. Ich hash die Passwörter mit sha1. Wie würde ich das für den Benutzer wiederherstellen?Passwortwiederherstellung mit sha1 Passwort Hashing

Was ist die beste Methode, um dies zu implementieren?

+1

dupe: http://stackoverflow.com/questions/3615408/php-dehashing-the-password unter anderem – Anon

+0

möglich duplicate von [PHP: Wie man das ursprüngliche Passwort an den Benutzer sendet, wenn er auf Passwort vergessen, das verschlüsselt ist mit md5?] (http://stackoverflow.com/questions/2780198/phphow-to-send-the-original-password-to-the-user-when-he-clicks-forgot-password) – meagar

Antwort

29

Kurze Antwort, können Sie nicht.

Sie möchten ein Passwort reset Funktion, kein Passwort Abruf Funktion. Der eigentliche Sinn von Hash-Passwörtern besteht darin, dass Sie das Kennwort des Benutzers nicht speichern können, und Sie können es nicht wiederherstellen, wenn es verloren geht.

This sollten Sie eine ungefähre Vorstellung davon, wie Benutzern zu ermöglichen, um vergessene Passwörter zurückzusetzen:

+6

nicht nur das Er kann es nicht tun. Genauer gesagt, er sollte es nicht können. andernfalls wäre Hashing per definitionem nutzlos. – ITroubs

+2

Darn. Ich hätte für die kurze Antwort gehen sollen :) –

+0

Danke dafür. Also, das Passwort zurücksetzen macht Sinn. Vielen Dank! – BigMike

8

Die beste Methode ist nicht das ursprüngliche Passwort wiederherzustellen, um zu versuchen. Wenn ein Benutzer sein Passwort verliert, dann erzeuge ein neues, zufälliges und benutze eine Out-of-Band-Methode, um es an sie zu senden (z.B. E-Mail). Denken Sie daran, dass der Schlüssel zum Hashing des Passworts darin besteht, die Wiederherstellung zu verhindern.

Ich weiß, ich weiß, E-Mail ist unsicher. Wenn Sie jedoch möchten, dass Benutzer das generierte Passwort sofort ändern, wird das Risiko gemindert.

Übrigens kann ich nicht genug empfehlen, dass Sie auch das Passwort sättigen und den Hash-Wert iterieren, um Brute-Force-Angriffe zu verhindern, falls ein Angreifer den Hashwert erhält.

3

NO

Es gibt keinen bekannten effektiven Weg, um einen SHA1 Hash es Originaltext zurückkehrt (da es sich um eine Einweg-Funktion nach Design ist). Wenn Sie Benutzern zu einem späteren Zeitpunkt ihr Passwort anzeigen möchten, haben Sie , um es in einer reversiblen Methode zu speichern (IE-Verschlüsselung, Klartext). Dies ist immer noch eine schlechte Idee, versuchen Sie eine better way of doing it zu finden.

+0

Was ist eine ineffektive Art, einen sha1-Hash zurückzusetzen? :) –

+0

@George Rainbow Tables wird ziemlich gut auf kurze einfache Passwörter funktionieren, aber wenn der Hash gesalzen ist oder Symbole enthält, wird Ihr wahrscheinlich nicht in der Lage sein, es umzukehren. –

+0

@George - Brute Force :) – Ishtar

Verwandte Themen