En una aplicación web escrita en Perl y utilizando PostgreSQL, los usuarios tienen nombre de usuario y contraseña. ¿Cuál sería la forma recomendada de almacenar las contraseñas?¿Cuál es la forma recomendada de cifrar contraseñas de usuario en una base de datos?
Cifrado utilizando la función crypt()
de Perl y una sal al azar? Eso limitaría la longitud útil de las contraseñas a 8 caracteres y requerirá recuperar la contraseña almacenada para compararla con la dada por el usuario al autenticarse (para obtener la sal que estaba adjuntada).
¿Hay una forma incorporada en PostgreSQL para hacer esto?
¿Debo utilizar Digest::MD5?
También recuerde saltear sus contraseñas. http://www.aspheute.com/english/20040105.asp –
Asegúrese de que no necesita admitir esquemas de autenticación basados en hash. Lamento mi decisión de cifrar la contraseña en una base de datos debido a un nuevo requisito para admitir el esquema de LDAP {SSHA}. –
@ZZ Coder: ¿y por qué es eso un problema? Simplemente cree su nuevo conjunto y cuando un usuario inicie sesión, haga magia detrás de escena para actualizarla en su nueva base de datos. Debería * nunca * almacenar contraseñas que puedan recuperarse en texto sin formato y el uso de hash es una buena forma de hacerlo. –