PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Génération du mot de passe utilisateur postgresql

Le hachage du mot de passe de Postgres est très proche de ce que vous avez fait, il suffit d'inclure le nom d'utilisateur comme suit :

 pghash = "md5" + hashlib.md5(password + username).hexdigest()

AFAIK, les documents postgres ne documentent pas vraiment ce format de hachage et semblent supposer que les administrateurs traiteront rarement ces hachages directement :( Il n'y a pas de méthodes intégrées pour générer ces hachages que je connaisse. Si le mot de passe fourni au ALTER USER La commande n'est pas conforme au format de hachage postgres, elle suppose que le mot de passe n'a pas été haché et s'en occupe en interne - conformément à la documentation du mot-clé ENCRYPTED de CREATE ROLE. (À mon humble avis, il s'agit d'un comportement défectueux, car si un hachage dépend du nom d'utilisateur, cela signifie que les hachages ne peuvent pas être copiés et collés entre différents comptes, se cassent lorsque le compte est renommé et (en supposant l'entropie) n'a que ~ 6 bits de sel efficace).

L'avertissement en haut de la documentation de passlib pour le hachage pourrait probablement être plus clair. Il était destiné à avertir les personnes parcourant la documentation passlib que 1) ce hachage était horriblement peu sûr, 2) qu'ils ne devraient pas l'adopter pour une utilisation dans leurs propres applications, et 3) qu'il n'était adapté que pour travailler avec comptes d'utilisateurs postgres, car il s'agit du format de hachage le plus puissant (et le seul) pris en charge par postgres pour ses propres comptes.

(Si vous essayez d'utiliser postgres pour hacher les mots de passe des comptes d'utilisateurs de votre propre application, j'appuie fortement la recommandation de Clodoaldo d'utiliser bcrypt via l'extension pgcrypto).