PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Was ist die empfohlene Methode zum Verschlüsseln von Benutzerkennwörtern in einer Datenbank?

Verwenden Sie nicht SHA1 oder SHA256 , wie die meisten anderen Leute vorschlagen. Verwenden Sie auf keinen Fall MD5 .

SHA1/256 und MD5 sind beide darauf ausgelegt, Prüfsummen von Dateien und Strings (und ggf. anderen Datentypen) zu erstellen. Aus diesem Grund sind sie so konzipiert, dass sie so schnell wie möglich sind, damit die Prüfsumme schnell generiert werden kann.

Diese hohe Geschwindigkeit macht es viel einfacher, Passwörter brutal zu erzwingen, da ein gut geschriebenes Programm problemlos Tausende von Hashes pro Sekunde generieren kann.

Verwenden Sie stattdessen einen langsamen Algorithmus, der speziell für Passwörter entwickelt wurde. Sie sind so konzipiert, dass sie etwas länger brauchen, um generiert zu werden, mit dem Vorteil, dass Brute-Force-Angriffe viel schwieriger werden. Aus diesem Grund sind die Passwörter viel sicherer.

Sie werden keine signifikanten Leistungseinbußen feststellen, wenn Sie nur einzelne Passwörter einzeln verschlüsseln, was die normale Implementierung zum Speichern und Überprüfen von Passwörtern ist. Nur in der Masse liegt der wirkliche Unterschied.

Ich persönlich mag bcrypt. Es sollte eine Perl-Version davon verfügbar sein, da eine schnelle Google-Suche mehrere mögliche Übereinstimmungen ergab.