postgresql: Wie speichert man ein Benutzerpasswort?

8

Ich benutze play-framework 2.0 (Java Web-Framework) mit postgresql.

  1. Welcher Verschlüsselungstyp für das Passwort eines Benutzers ist heute am häufigsten anzutreffen? Ich habe verstanden, dass MD5 in den letzten Jahren reichlich vorhanden war.
  2. Was ist der richtige Datentyp für das Feld "password" in der Benutzerklasse (und damit in der postgresql DB)?

Danke

    
socksocket 20.08.2012, 15:39
quelle

3 Antworten

8

Sie möchten das Passwort hashen, nicht verschlüsseln (Siehe Frage für weitere Details). Der aktuell empfohlene Ansatz ist die Verwendung eines adaptiven Hashalgorithmus, wie bcrypt . jBcrypt ist eine solide Java-Implementierung, die Sie verwenden können.

Wie beim DB-Typ können Sie es einfach als String behandeln.

    
Oleksi 20.08.2012, 15:47
quelle
2

Ich habe jBcrypt zusammen mit Play Framework internal Crypto verwendet (Idee von hier: https://groups.google.com/forum/?fromgroups#!topic/play-framework/9KIUwWBjudQ[1-25])

Auch wenn ich die Registrierung für Benutzer hinzugefügt habe, habe ich sichergestellt, dass das Passwort ein gewisses Maß an Komplexität hat (mindestens acht Zeichen von Minuszeichen, Großbuchstaben, eine Zahl). usw. nennst du es im Grunde? Aber ich möchte nur darauf hinweisen, dass es bei der Sicherheit nicht nur um Verschlüsselung geht, die Hälfte des Kuchens stellt sicher, dass Benutzer komplexe Passwörter verwenden:)

    
Mauno Vähä 20.08.2012 16:38
quelle
1

Sie sollten den SHA-x-Algorithmus verwenden, um das Passwort zu hashen. Dies ist mehr oder weniger die Ersatz-Hash-Funktion von MD5.

%Vor%

Aber seien Sie vorsichtig, fügen Sie vor dem Hashing ein Salz zum Passwort hinzu, um einen Angriff auf die Hashtabelle zu vermeiden.

Die DB-Spalte sollte ein Varchar sein. Die Länge hängt von der Version ab, die Sie für den SHA-Algorithmus verwenden

HIH

    
poussma 20.08.2012 15:51
quelle