2017-07-30 4 views
0

J'essaie de comprendre comment les mots de passe sont supposés fonctionner dans Postgres.Postgres: MD5 Mot de passe/Mot de passe simple

https://www.postgresql.org/docs/current/static/sql-createrole.html dit pour CRYPTEES/UNENCRYPTED

Si la chaîne de mot de passe présenté est déjà au format MD5 crypté, il est stocké crypté comme-est,

donc mon mot de passe non chiffré: Mon mot de passe .

Le hachage MD5 de "MonMotdePasse" est 48503dfd58720bd5ff35c102065a52d7

Si je

-- See https://www.postgresql.org/docs/9.6/static/sql-alterrole.html 
ALTER ROLE "MeOhMy" 
LOGIN 
PASSWORD '48503dfd58720bd5ff35c102065a52d7' 
; 

Et puis essayez d'utiliser "MonMotdePasse" lorsque vous faites

sudo -u postgres psql meohmy -h 127.0.0.1 -d meohmy_development 

I, bien sûr, d'abord être invité pour mon mot de passe sudo et puis je suis invité par Postgres "Mot de passe pour meohmy"

Si j'entre MonMotdePasse je reçois

FATAL: password authentication failed for user "[email protected]" 

Si je rentre, au lieu, 48503dfd58720bd5ff35c102065a52d7 alors je peux vous connecter.

Qu'est-ce que je ne comprends?

+0

MD5 n'est pas le cryptage car la fonction de hachage n'est pas un cryptage, ce sont des méthodes unidirectionnelles non réversibles. Le cryptage suppose le décryptage, qu'avec la clé correcte, les données cryptées peuvent être renvoyées à l'état non crypté. – zaph

+0

MD5 n'est pas un vérificateur de mot de passe sécurisé ou acceptable. Lors de l'enregistrement d'un vérificateur de mot de passe, il suffit d'utiliser une fonction de hachage et il suffit d'ajouter un sel pour améliorer la sécurité. Au lieu de itérer sur un HMAC avec un sel aléatoire pour une durée d'environ 100ms et enregistrer le sel avec le hachage. Utilisez une fonction telle que 'PBKDF2',' Rfc2898DeriveBytes', 'password_hash',' Bcrypt', 'passlib.hash' ou des fonctions similaires. Le but est que l'attaquant passe beaucoup de temps à trouver des mots de passe par force brute. – zaph

+0

Bien que vous ayez absolument raison dans vos deux commentaires, il y a deux considérations: 1) Je suis limité aux installations que Postgres me donne. 2) Les données que je protège ne sont pas si précieuses, alors il ne vaut pas la peine de passer du temps à les protéger avec le plus haut niveau de sécurité. – RalphShnelvar

Répondre

1

Postgresql mots de passe hachés ont préfixe md5:

md548503dfd58720bd5ff35c102065a52d7 
+0

Où est-ce documenté !!?! Tout ce que j'ai trouvé est https://stackoverflow.com/questions/14918763/generating-postgresql-user-password – RalphShnelvar

+0

@RalphShnelvar https://www.postgresql.org/docs/current/static/catalog-pg-authid.html –

-1

La réponse fournie par @zerkms est partiellement correcte. Cela m'a conduit à la bonne réponse.

La réponse fournie dans Generating postgresql user password est la réponse qui fonctionne pour moi.

+0

Juste un lien est insuffisant, il n'aide pas complètement les futurs lecteurs et peut devenir invalide. – zaph

+0

Ok ... pour les futurs lecteurs l'article que j'ai pointé dit: 'pghash =" md5 "+ hashlib.md5 (mot de passe + nom d'utilisateur) .hexdigest()' – RalphShnelvar