Heim > Artikel > Backend-Entwicklung > So speichern Sie Benutzerkennwörter sicher
1: Grundwissen: Hashing mit Salt
Wir wissen bereits, wie einfach es für böswillige Angreifer ist, Lookup-Tabellen und Rainbow-Tabellen zu verwenden, um gewöhnliche Hash-Verschlüsselung schnell zu knacken. Wir haben auch
gelernt, dass die Verwendung von zufällig gesalzenen Hashes dieses Problem lösen kann. Aber welche Art von Salz verwenden wir und wie mischen wir es in ein Passwort?
Der Salt-Wert sollte mithilfe eines kryptografisch sicheren Pseudozufallszahlengenerators, CSPRNG, generiert werden. CSPRNG unterscheidet sich stark von gewöhnlichen Pseudozufallszahlengeneratoren,
wie der rand()-Funktion der Sprache „C“. Wie der Name schon sagt, ist CSPRNG kryptografisch sicher konzipiert, was bedeutet, dass es hochgradig zufällige, völlig unvorhersehbare Zufallszahlen liefern kann. Wir möchten nicht, dass der Salzwert vorhersehbar ist, daher muss CSPRNG verwendet werden.
In der folgenden Tabelle sind die CSPRNG-Methoden einiger aktueller Mainstream-Programmierplattformen aufgeführt.
Verwenden Sie für jedes Passwort jedes Benutzers einen eindeutigen Salt-Wert. Jedes Mal, wenn ein Benutzer ein Konto erstellt oder sein Passwort ändert, sollte das Passwort einen neuen zufälligen Salt-Wert haben. Niemals einen Salzwert wiederverwenden. Der Salt-Wert sollte außerdem lang genug sein, damit genügend Salt-Wert vorhanden ist, der für die Hash-Verschlüsselung verwendet werden kann. Als Faustregel gilt, dass der Salt -Wert mindestens so lang sein sollte wie die Ausgabe der Hash-Funktion. Dieses Salt sollte zusammen mit dem Passwort-Hash in der Benutzerkontentabelle gespeichert werden.Platform | CSPRNG |
---|---|
PHP | mcrypt_create_iv, openssl_random_pseudo_bytes |
Java | java.security.SecureRandom |
Dot NET (C#, VB) | System.Security.Cryptography.RNGCryptoServiceProvider |
Ruby | SecureRandom |
Python | os.urandom |
Perl | Math::Random::Secure |
C/C++ (Windows API) | CryptGenRandom |
Any language on GNU/Linux or Unix | Read from /dev/random or /dev/urandom |
Schritte zum Speichern des Passworts:
Verwenden Sie CSPRNG, um lange genug einen zufälligen Salt-Wert zu generieren.
Schritte zum Überprüfen des Passworts:
Rufen Sie den Salt-Wert des Benutzers aus der Datenbank ab und den entsprechenden Hashwert.
Das obige ist der detaillierte Inhalt vonSo speichern Sie Benutzerkennwörter sicher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!