Nein, tu das nicht!
Password Hashing soll jemanden, der Ihre Datenbank kopiert, dazu bringen, die Anmeldeinformationen nicht zu verwenden. Durch Hashing auf der Client-Seite haben Sie genau den Wert in der Datenbank, der in der Anfrage gesendet werden muss. Ein Angreifer würde also einfach das Hashing deaktivieren und den Datenbankwert als Passwort verwenden.
Schneller Überblick über Passwort-Hashing:
Jeder Benutzer ein Passwort hat, dass Ihr Dienst kennt. Sie benutzen es um sich einzuloggen. Stellen Sie sich vor, Sie haben diese in Klartext gespeichert. Das wäre schlecht, wenn jemand Ihre Datenbank kopiert. Also Hash jedes Passwort mit einem Algorithmus wie MD5 oder sha1. Der Hash kann nicht zum Wiederherstellen des Kennworts verwendet werden. Sie können jedoch ein Kennwort prüfen, wenn es gültig ist. Problem gelöst?
Nicht ganz. Es ist einfach, eine Rainbow-Tabelle für einen Hash-Algorithmus zu erstellen. Auf diese Weise können Sie schnell nach möglichen Eingabewerten für jeden Hash suchen. Also du Salz. Dies bedeutet, dass jeder Benutzer eine zufällige Zeichenfolge hat, die vor dem Hashing an das Kennwort angehängt wird, wodurch eine eindeutige Hashing-Funktion pro Benutzer erstellt wird. Perfekte Lösung?
Wieder nicht ganz. Wenn Ihre Datenbank kopiert wird, kann diese mit ausreichender Rechenleistung geknackt werden. Ihr letzter Schritt ist also Iterationen. Sie fügen nicht nur das Salz und den Hash hinzu, sondern Sie nehmen dieses Ergebnis, hängen das Salz erneut an und haseln erneut. Du machst das ein paar hundert Mal. Auf diese Weise wird es für einen Angreifer teurer, Brute-Force-Angriffe durchzuführen. Dies ist, was bcrypt tut. Mit der Zeit nimmt die Rechenleistung zu, daher sollten Sie die Anzahl der Iterationen erhöhen.
das ist nicht genug Informationen zu gehen. – Alnitak
Aktualisiert die Frage – user2206329
So speichert das Produkt der Drittpartei Passwörter im Klartext? – fafl