TLDR. Puede ser seguro si lo configura correctamente y usa buenas contraseñas largas.
1. En postgres, md5 auth-method
significa hashing del lado del cliente (discusiones: 1 , 2 ), que hace hashes contraseña equivalente . Un hash en la db se compara con un hash recibido de un cliente. Un atacante puede usar cualquier hash de la tabla pg_shadow robada directamente, sin siquiera gastar tiempo para descifrar el md5.
Es mucho más seguro asumir que los hash serán robados eventualmente y evitar el hashing del lado del cliente.
En realidad, solo puede mirar el código, es bastante simple: enlace < - enlace directo a esta línea:
if (strcmp(crypt_client_pass, crypt_pwd) == 0)
Mira qué pasa cuando port->hba->auth_method == uaMD5
. Sí, uno no puede interceptar un hash de texto claro, de nuevo está salado y picado. Pero cuando es robado por cualquier otro ataque, puede usarse directamente sin grietas.
2. Como era de esperar, puede usar el hashing md5 del lado del servidor con postgres utilizando password auth-method
y create user whatever with encrypted password
.
Estos métodos funcionan de manera similar, excepto por la forma en que la contraseña
se envía a través de la conexión, es decir, hash MD5 y texto claro
respectivamente.
Use SSL para proteger la contraseña de texto simple. Probablemente debería saber cómo se almacena su hash: la sal se reutiliza:
/* Encrypt user-supplied password to match stored MD5 */
if (!pg_md5_encrypt(client_pass, // const char *passwd
port->user_name, // const char *salt
strlen(port->user_name),
crypt_client_pass)) // char *buf
Uno incluso podría crear nombres de usuario desechables generados al azar para usarlos como sal, pero no estoy seguro de que sea una buena idea, esto es propenso a errores.
Si bien la recomendación general es migrar desde md5, aún no está roto para el hashing de contraseñas. Pregunta relevante: Por qué ¿la gente sigue utilizando / recomienda MD5 si está roto desde 1996?
No utilice contraseñas cortas. Las contraseñas aleatorias largas y de alta calidad siguen siendo seguras.
Para una estimación rápida, estos enlaces (desafortunadamente, bastante antiguos) tienen algunos números:
enlace < br> enlace
Actualización : gracias a RhodiumToad del canal #postgresql en irc.freenode.net por aclarar que md5 aún no está roto para el hashing de contraseñas, las buenas contraseñas largas salvarán el día.