Wie kann ich Passwörter in Postgresql Hash?
Brauche ich für die hash-Passwörter mit salt auf postgresql, und ich habe nicht in der Lage zu finden alle relevanten Unterlagen auf, wie zu bekommen, dass getan.
Also, wie kann ich die hash-Passwörter (mit einigen Salzen) in postgresql?
InformationsquelleAutor der Frage Kzqai | 2010-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist schon eine Weile her, seit ich diese Frage gestellt, und ich bin viel vertrauter mit der kryptographischen Theorie jetzt, also hier ist der modernere Ansatz:
Argumentation
Debian/Ubuntu-Pakete installieren,
Aktivieren crypt() und bcrypt in postgresql in Ihrer Datenbank
Verwenden Sie crypt() und gen_salt() in Abfragen
Vergleichen :pass auf bestehende hash mit:
Erstellen Sie eine hash -: Passwort mit einer großen random salt:
Ab-in-Php-bcrypt Hashen ist etwas vorzuziehen
Gibt es
password_*
Funktionen in php 5.5 und höher, die es erlauben trivial einfache Passwort-hashing mit bcrypt (Zeit!), und es ist eine Abwärtskompatibilität Bibliothek für Versionen darunter. In der Regel , hashing fällt zurück auf die Verpackung einer linux-Systemaufrufe für niedrigere CPU-Auslastung trotzdem, obwohl möchten Sie vielleicht, um sicherzustellen, dass es auf Ihrem server installiert. Siehe: https://github.com/ircmaxell/password_compat (erfordert php 5.3.7+)Vorsichtig sein, die Protokollierung
Beachten Sie, dass mit pg_crypto, die Passwörter sind im Klartext alle während der übertragung vom browser, der php in die Datenbank. Das bedeutet, Sie können protokolliert werden im Klartext von Abfragen wenn Sie nicht vorsichtig mit Ihren Datenbank-Protokolle. z.B. mit einer postgresql-slow-query-log fangen konnte und log-Passwort für eine login-Abfrage in progress.
Zusammenfassend
Php bcrypt, wenn Sie können, Sie werden verringern die Zeit, das Passwort bleibt unhashed. Versuchen Sie, um sicherzustellen, dass Ihr linux-system hat bcrypt installiert, es ist
crypt()
so, das ist performant. Upgrade auf mindestens php 5.3.7+ ist sehr zu empfehlen als php-Implementierung ist etwas buggy von php 5.3.0 auf 5.3.6.9 und unangemessen fällt zurück auf die gebrocheneDES
ohne Warnung in php 5.2.9 und niedriger.Wenn Sie wollen/brauchen-postgres-hashing, Installation bcrypt ist der Weg zu gehen, als die standardmäßig installierte hashes sind alt und kaputt (md5, etc).
Hier sind Verweise auf weitere Lektüre zum Thema:
InformationsquelleAutor der Antwort Kzqai
Sollte eine Anwendung hash seine Passwörter mit Schlüssel Ableitung Funktion wie bcrypt oder pbkdf2. Hier gibt es mehr Informationen zu secure password storage.
... aber manchmal müssen Sie noch cryptogrpahic Funktionen in einer Datenbank.
Können Sie pgcryptoum Zugang zu sha256, das ein Mitglied der sha2-Familie. Im Verstand halten, sha0,sha1 md4 und md5 sind sehr kaputt und sollte nie verwendet werden, für Passwort-hashes.
Folgende ist eine gut Methode des hashing der Passwörter:
Das Salz sollte sein, eine große, zufällig generierte Wert. Dieses Salz sollten geschützt werden, da die hashes nicht gebrochen werden kann, bis das Salz zurückgewonnen. Wenn Sie die Speicherung der salt in der Datenbank, dann erhält man zusammen mit dem Passwort-hash mit sql-injection. Die Verkettung der Primärschlüssel wird verwendet, um zu verhindern, dass 2 Menschen aus, die das gleiche Passwort-hash, auch wenn Sie das gleiche Kennwort haben. Natürlich ist dieses system verbessert werden könnte, aber das ist viel besser als die meisten Systeme, die ich gesehen habe.
In der Regel ist es am besten zu tun hashing in Ihrer Anwendung, bevor es auf die Datenbank. Dies ist, weil querys können zeigen, bis in den Protokollen, und wenn der Datenbank-server besessen wurde, dann könnten Sie die Protokollierung aktivieren, um Klartext-Passwörter.
InformationsquelleAutor der Antwort rook
Beispiele und Dokumentation zu: http://www.postgresql.org/docs/8.3/static/pgcrypto.html
InformationsquelleAutor der Antwort Matej Puntar