PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Generazione password utente postgresql

L'hash della password di Postgres è molto simile a quello che hai fatto tu, ha solo bisogno che il nome utente sia incluso come segue:

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

AFAIK, i documenti postgres non documentano affatto questo formato hash e sembrano presumere che gli amministratori raramente si occuperanno direttamente di questi hash :( Non ci sono metodi integrati per generare questi hash che conosco. Se la password fornita al ALTER USER il comando non è conforme al formato hash postgres, presuppone che la password non sia stata sottoposta a hash e se ne occupa internamente - secondo i documenti per la parola chiave ENCRYPTED di CREATE ROLE. (IMHO questo è un comportamento imperfetto, perché se un hash dipende dal nome utente, significa che gli hash non possono essere copiati e incollati tra account diversi, si interrompono quando l'account viene rinominato e (indovinando l'entropia) ha solo ~ 6 bit di sale efficace).

L'avviso nella parte superiore della documentazione di passlib per l'hash potrebbe probabilmente essere più chiaro. Aveva lo scopo di avvertire le persone che sfogliavano la documentazione di passlib che 1) questo hash era terribilmente insicuro, 2) che non avrebbero dovuto adottarlo per l'uso nelle proprie applicazioni e 3) che era adatto solo allo scopo di lavorare con account utente postgres, poiché è il formato hash più potente (e unico) che postgres supporta per i propri account.

(Se stai cercando di utilizzare postgres per eseguire l'hashing delle password per gli account utente della tua applicazione, asseconderei vivamente la raccomandazione di Clodoaldo di utilizzare bcrypt tramite l'estensione pgcrypto).