PDA

Ver la Versión Completa : Tipo de dato para un campo donde guardo contraseñas


richy08
27-08-2008, 18:55:38
Buenas tardes compañeros tengo una duda que me mata, al terminar mi aplicacion e instalar en la empresa para la cual se realizo, toda funciona bien el sistema de logeo pero ahi algo que me quita el sueño nunca encontre un tip ode dato para guardar las contraseñas y las guardo como texto plano lo cual cualquier persona con un poco de conocimientos sobre las herramientas del mssql y que logre accesar a la BD podra ver cualquier contraseña :o existe algun tipo de dato que cifre la contraseña o algun algoritmo para hacerlo gracias por cualquier comentario.

dec
27-08-2008, 19:09:22
Hola,

En mi experiencia las contraseñas no se guardan nunca en claro, ni siquiera se cifran, puesto que podrían "descrifrarse". Lo que se hace es guardar un "hash", una "firma" de la contraseña, como pueda ser SHA1 ó MD5 (http://www.clubdelphi.com/trucos/index.php?id=402&scroll=0&scrollb=0). De este modo, tú guardas la "firma" (que es una cadena de caracteres) de una determinada contraseña, y, lógicamente, para comprobar si una contraseña es correcta, obtienes su "firma", que es lo que comparas con la "firma" guardada previamente en la base de datos. No sé si te habré aclarado algo o qué. ;)

richy08
27-08-2008, 19:13:30
Hola,

En mi experiencia las contraseñas no se guardan nunca en claro, ni siquiera se cifran, puesto que podrían "descrifrarse". Lo que se hace es guardar un "hash", una "firma" de la contraseña, como pueda ser SHA1 ó MD5 (http://www.clubdelphi.com/trucos/index.php?id=402&scroll=0&scrollb=0). De este modo, tú guardas la "firma" (que es una cadena de caracteres) de una determinada contraseña, y, lógicamente, para comprobar si una contraseña es correcta, obtienes su "firma", que es lo que comparas con la "firma" guardada previamente en la base de datos. No sé si te habré aclarado algo o qué. ;)

a ok mira muy buena respuesta sip claro sip entendi lo que me explicaste y el script que lo hace le echare un vistazo para integrarlo a mi forma de conexion, solo me queda una duda de que tipo de dato debe ser el campo paasword que contendra el hash:confused: gracias.

roman
27-08-2008, 19:25:57
Y dependiendo de qué base uses es posible que ésta ya cuente con las funciones que comenta dec. Por ejemplo, es el caso de mysql.

El tipo de datos puede ser cualquier tipo char.

// Saludos

richy08
27-08-2008, 20:14:41
muchas Gracias roman y dec ya modifique mi aplicacion con los comentarios que me han dado :D

richy08
27-08-2008, 21:23:37
:DHola de nuevo yo jeje recapitulando por que lo habia programado asi cai en que lo habia hecho por que las conexiones realmente las hago con los usuarios que creo desde la aplicacion en el mssql 2005 y ahora tengo una duda en el script que me paso dec viene la funcion para hacer la conversion a la inversa :confused: pro que de seguro que a un usuario despistado se le va olvidar su contraseña y pues va hacer un poco molesto para el encargado del sistema estar editando cada que esto pase, mil gracias por su tiempo.

maeyanes
27-08-2008, 21:33:14
Hola...

Según se... el Hash MD5 no tiene inversa... Así que deberías tener en tu aplicación una opción para resetear la contraseña, esto es, que el sistema genere una contraseña nueva y ya luego el usuario cuando entre a su cuenta pueda cambiarla dentro del sistema. Y lógicamente, que esta opción solo la pueda usar el Administrador...



Saludos...

roman
27-08-2008, 21:33:35
pro que de seguro que a un usuario despistado se le va olvidar su contraseña y pues va hacer un poco molesto para el encargado del sistema estar editando cada que esto pase

Las funciones que te comenta dec son precisamente para no poder hacer la conversión inversa. Y es así con todo propósito ya que ni siquiera el administrador de un sistema debería conocer las contraseñas de los usuarios. Esto es por protección misma del administrador.

Ahora bien, esta regla yo me la he saltado en sistemas donde la seguridad no es crucial y donde ciertamente los usuarios suelen olvidarse de su contraseña (y, por cierto, mucho menos tendrán la intención y/o habilidad de vulnerar la seguridad). En esos casos, me conformo con guardar las contraseñas en texto plano. Eso sí, se las genero yo para que no pongan gato, perro o su propio nombre como contraseña.

// Saludos

richy08
27-08-2008, 21:49:32
:D a gracias roman esa no me la sabia que n ose pueden dar vuelta hacia atras, pues si la aplicacion tiene la forma de resetear las contraseñas y volverlas a generar, pero optare por derle trabajo al administrador de la aplicacion por que esos usuarios y contraseñas son los mismos que creo en el mssql 2005 ahi otra cosa que me tiene inquieto creo los usuarios por medio de los procedimientos almacanados propios del mssql, pero cual fue mi sorpresa que esos usuarios por medio del managment studio se pueden logear y ver la bd no he intentado borrar tablas o hacer extragos con esos usuarios los permisos que les doy sobre las tablas son delete, references, insert, select y update pro que son lo minimo que necesita cada usuario creen ustedes que con eos sea suficiente para partirle su mandarina en gajos a la bd.:confused: gracias