Foros del Web » Programando para Internet » PHP »

Problema con contraseñas y md5

Estas en el tema de Problema con contraseñas y md5 en el foro de PHP en Foros del Web. Hola. Estoy trabajando en un formulario que permitirá cambiar a un usuario sus datos de registro. El problema lo tengo en la contraseña.. me explico. ...
  #1 (permalink)  
Antiguo 14/10/2011, 04:53
 
Fecha de Ingreso: agosto-2003
Mensajes: 324
Antigüedad: 20 años, 8 meses
Puntos: 1
Problema con contraseñas y md5

Hola.
Estoy trabajando en un formulario que permitirá cambiar a un usuario sus datos de registro.
El problema lo tengo en la contraseña.. me explico.

Cuando registro al usuario en la bd, meto el valor del campo contraseña, codificado con md5.
El control de usuario/clave lo tengo bien...

El problema lo tengo cuando el usuario entra en el formulario para editar sus datos, y entre ellos está el campo contraseña.
El valor lo muestro tipo password, y claro, lo que recupera es el valor de la bd (codificado, pero al usario le da igual, ya que no lo "lee").
Al guardar esos datos, si ha modificado la clave, no hay problema.. la codifico y actualizo la bd.

Pero si no modifca la clave.. lo que me guarda es el valor que recupero desde la bd, es decir,.... la contraseña modificada, y por tanto... me da otro valor codificado.

¿Cómo puedo corregirlo?
gracias
  #2 (permalink)  
Antiguo 14/10/2011, 06:08
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: Problema con contraseñas y md5

De ese modo como lo haces no lo podrás corregir jamás ya que un valor codificado en md5 no puede ser decodificarse con nada. No es así como debes hacer tu formulario. Nunca se ha visto que entre los campos del usuario también deba estar la contraseña con su valor (aunque no se muestre porque está enmascarado). Debes tener un apartado llamado "Modificar contraseña" en ese apartado hay tres campos: "Contraseña actual", "Nueva Contraseña", "Confirme nueva Contraseña". Solamente cuando la "Contraseña actual" sea la correcta y haya ingresado la Nueva Contraseña y su confirmación correctamente se va a dar el update para modificar la contraseña, en otro caso no y a mi parecer eso se debe hacer utilizando otro sentencia sql a parte, no dentro de la sentencia de la actualización de los demás datos. Esa es la forma que suelo ver en los administradores de usuarios y es la que me parece mas conveniente. Ese es mi consejo. Suerte!
  #3 (permalink)  
Antiguo 14/10/2011, 12:33
 
Fecha de Ingreso: octubre-2011
Mensajes: 4
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Problema con contraseñas y md5

Lo que dice Artificium es correcto. Lo que debes guardar siempre en la base de datos es el resultado de la función md5($password) y no la contraseña en sí. Lo que tienes que validar no es la contraseña; sino que md5($password) == $md5_password_guardado. No puedes decodificar el resultado de una función MD5. No hay forma de volver atrás. Por eso es bastante segura, pues no guardas la contraseña (en este caso), sino el valor MD5 que le corresponde (una especie de HASH o CRC, para compararlo con algo). En tu caso

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (md5($password) == $md5_password_guardado)
  4.    echo "Contraseña correcta."; // ó lo que quieras hacer
  5. else
  6.    echo "Contraseña incorrecta.";
  7.  
  8. ?>
  #4 (permalink)  
Antiguo 17/10/2011, 00:30
 
Fecha de Ingreso: agosto-2003
Mensajes: 324
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Problema con contraseñas y md5

Muchas gracias por la aclaración.. me pongo a mdificar como indicáis.

Etiquetas: contraseñas, md5, registro, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:13.