28/04/2010, 09:19
|
|
Respuesta: Cifrado contraseñas md5 no es cifrado, es una suma de verificación. Para validar una contraseña funcionará bien, ya que los casos de colisiones en el algoritmo requieren mucho trabajo, y requieren conocer la cadena md5 original. Si alguien se roba tu base, es probable que consiga obtener una cadena que tenga la misma suma md5 que alguna de las contraseñas, pero seguramente resulte en una cadena binaria imposible (en la práctica y con algunos cuidados) de introducir en un campo de texto.
La idea es que en tu base de datos guardás la suma md5 y no conocés la contraseña verdadera. Cada vez que el usuario quiere entrar, comparás el valor que tenés guardado con la suma de la cadena que te pasaron para el campo contraseña. Si es igual, la contraseña es correcta.
En cuanto a la segunda pregunta, si hacés que se calcule del lado del cliente y se envíe luego mejor te ahorras el cifrado, ya que será inútil: estarás comparando el valor que te llega a PHP contra el que tenés en la base de datos. Tal y como lo harías si no tuvieras seguridad alguna. Alguien que obtenga tu base de datos y conozca el md5 podría sin problema alguno manipular tu formulario para enviar el mismo md5 y entrar, sin conocer la contraseña. Eso no es debilidad de md5 sino del hecho de confiar en un dato que puede ser manipulado del lado del cliente.
saludos. |