sql >> Base de Datos >  >> RDS >> PostgreSQL

Generando contraseña de usuario postgresql

El hash de contraseña de Postgres es muy similar a lo que hizo, solo necesita que se incluya el nombre de usuario de la siguiente manera:

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

AFAIK, los documentos de Postgres realmente no documentan este formato de hash en absoluto, y parecen asumir que los administradores rara vez tratarán con estos hash directamente :( No hay métodos integrados para generar estos hash que yo sepa. Si la contraseña proporcionada al ALTER USER El comando no se ajusta al formato hash de postgres, asume que la contraseña no ha sido codificada y se ocupa de eso internamente, según los documentos para la palabra clave ENCRYPTED de CREATE ROLE. (En mi humilde opinión, este es un comportamiento defectuoso, porque si un hash depende del nombre de usuario, significa que los hash no se pueden copiar y pegar entre diferentes cuentas, se rompen cuando se cambia el nombre de la cuenta y (adivinando la entropía) solo tiene ~ 6 bits de sal eficaz).

La advertencia en la parte superior de la documentación de passlib para el hash probablemente podría ser más clara. Estaba destinado a advertir a las personas que navegan a través de la documentación de passlib que 1) este hash era terriblemente inseguro, 2) que no deberían adoptarlo para usarlo en sus propias aplicaciones y 3) que solo era adecuado para trabajar con cuentas de usuario de postgres, ya que es el formato hash más fuerte (y único) que admite postgres para sus propias cuentas.

(Si está tratando de usar postgres para codificar contraseñas para las cuentas de usuario de su propia aplicación, apoyaría firmemente la recomendación de Clodoaldo de usar bcrypt a través de la extensión pgcrypto).