Ver Mensaje Individual
  #35 (permalink)  
Antiguo 23/03/2015, 14:04
Avatar de NueveReinas
NueveReinas
 
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 11 años, 2 meses
Puntos: 145
Respuesta: Problema al comparar contraseñas con crypt()

Cita:
Iniciado por hhs Ver Mensaje
Ok, ahora para los mismo datos conocidos intenta hacer el login utilizando la base de datos y manda los resultados
Correcto.

Creé desde PHPMyAdmin un nuevo "usuario" donde el mail era "[email protected]" y la contraseña era "minuevapassword" pero encriptada.
De vuelta a la web, ingeresé ese mail y esa contraseña (sin encriptar), y me lo dio por válido.

Pero ahora he añadido comprobaciones de mail y password que NO me permiten ingresar si la contraseña no es la misma que en la BD (encriptada).

Código PHP:
Ver original
  1. //Conecta a la BD y selecciona mail y contraseña
  2. $consulta = "SELECT * FROM usuarios WHERE email = '$email' AND password = '$pass' ";
  3.  
  4. $resultado = mysqli_query($connection, $consulta) or die(mysql_error());
  5. $datos = mysqli_fetch_array($resultado);
  6.  
  7. $passwordDB = crypt($pass);
  8. if($datos['email'] == $email and password_verify($pass, $passwordDB)){
  9. // Se inicia la sesión
  10.     $_SESSION['usuario'] = $datos['email'];
  11.     $_SESSION['estado'] = 'Autenticado';
  12.     $mensaje_login = "Estás conectado/a como <strong>".$email."</strong> <br><br> <a href='http://www.ejemplo.com/BD/inicio'>Ir al inicio</a>";
  13.     $stm = $connection->prepare("UPDATE usuarios SET ip_ultima='$ip' WHERE email='$email' ");
  14.     $stm->execute();
  15. } else if ($datos['email'] != $email || $datos['email'] == "" || password_verify($pass, $passwordDB) != $passwordDB )
  16. {
  17.     $mensaje_login = "El mail o la contraseña son incorrectos. <br> <a href='javascript:history.back()'>Volver y corregir</a>";
  18. };

Si en la consulta lo dejo así:

Código PHP:
Ver original
  1. $consulta = "SELECT * FROM usuarios WHERE email = '$email' ";

Literalmente te deja entrar sin filtros hayas escrito o no un mail y/o una contraseña.

__________________
¿Te sirvió la respuesta? Deja un +1