Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: lauro en 7 Mayo 2021, 18:11 pm



Título: Problemas con Password_Verify
Publicado por: lauro en 7 Mayo 2021, 18:11 pm
Hola buenas !! tengo problemas con password_verify no encuentro cula es el problema
si alguen me puede ayudar. Gracias

no Compara bien el password que viene de la base de datos con la variable que viene del $_POST['password'].

En la base de datos ya puse varchar 255 caracteres

salta el Buble if pass_verify y dice que las contrseña no coincide

Código
  1. <?php
  2. // Inicializando la Session
  3. if(isset($_SESSION['usuarios']) && $_SESSION['usuarios'] === true)
  4. {
  5.    header("location: Roles.php");
  6.    exit;
  7. }
  8. include "conexion.php";
  9.  
  10. $usuario = $password = "";
  11. $usuario_err = $password_err = "";
  12.  
  13. if($_SERVER["REQUEST_METHOD"] === "POST")
  14. {
  15.    if(empty(trim($_POST['usuario'])))
  16.    {
  17.        $usuario_err = "Ingrese un Usuario";
  18.    }else
  19.        {
  20.            $usuario = trim($_POST['usuario']);
  21.        }
  22.  
  23.    if(empty(trim($_POST['password'])))
  24.    {
  25.        $password_err = "Ingrese un password";
  26.    }else
  27.        {
  28.            $password = trim($_POST['password']);
  29.        }
  30.  
  31.  
  32.    // Validar credenciales
  33.  
  34.    if(empty($usuario_err) && empty($password_err))
  35.    {
  36.        $sql = "SELECT login_id, login_usuario, login_password FROM login WHERE login_usuario = ?";
  37.  
  38.        if($stmt = mysqli_prepare($con, $sql))
  39.        {
  40.            mysqli_stmt_bind_param($stmt, "s", $param_usuario);
  41.  
  42.                $param_usuario = $usuario ;
  43.  
  44.                if(mysqli_stmt_execute($stmt))
  45.                {
  46.                    mysqli_stmt_store_result($stmt);
  47.  
  48.                    if(mysqli_stmt_num_rows($stmt) == 1)
  49.                    {
  50.                        mysqli_stmt_bind_result($stmt, $id, $usuario, $password1);
  51.  
  52.                        if(mysqli_stmt_fetch($stmt))
  53.                        {
  54.                            $pass_verify = password_verify($password, $password1);
  55.                                echo "pass es: ".$password;
  56.  
  57.                                echo "<br>";
  58.  
  59.                                echo "pass_hashed es: ".$password1;
  60.                            if($pass_verify === true)
  61.                            {
  62.                                session_start();
  63.  
  64.                                //variables de session
  65.  
  66.                                $_SESSION['usuarios'] = true;
  67.                                $_SESSION['id'] = $id;
  68.                                $_SESSION['usuario'] = $usuario;
  69.  
  70.                               header('location: Roles/usuario_nuevo.php');
  71.  
  72.                            }else
  73.                                {
  74.                                   $password_err = "La Contraseña es Incorrecta";
  75.                                }
  76.                        }
  77.                    }else
  78.                        {
  79.                            $usuario_err = "Nombre de Usuario no Registrado";
  80.                        }
  81.  
  82.                }
  83.  
  84.  
  85.        }
  86.    }
  87.  
  88. }

esta el la otra parte del codifo donde cifra la contrseña y la la guarda en la base de datos



 
Código
  1. if(empty($usuario_err) && empty($correo_err) && empty($password) && empty($password2))
  2.    {
  3.         $password1 = password_hash ($password, PASSWORD_DEFAULT);
  4.  
  5.        $sql = "INSERT INTO login (login_usuario, login_correo, login_password) VALUES ('$usuario', '$correo', '$password1')";
  6.  
  7.        $ejec = mysqli_query($con,$sql);
  8.  
  9.            if($ejec)
  10.            {
  11.               header('Location: Inicio Sesion.php');
  12.            }
  13.  
  14.    }
  15.  
  16. }


Título: Re: Problemas con Password_Verify
Publicado por: mchojrin en 18 Mayo 2021, 15:52 pm
¿Qué resultado te da este código?


Código:
$pass_verify = password_verify($password, $password1);
echo "pass es: ".$password;

echo "<br>";

echo "pass_hashed es: ".$password1;


Título: Re: Problemas con Password_Verify
Publicado por: lauro en 26 Mayo 2021, 00:05 am
Muestran esto en pantalla:

pass es: 1234
pass_hashed es: $2y$10$YNMHUhlZgbSk5OTr6ZAbE.k.CjlFKrXmPMIm5Khtzi2I4hIBMerzq

el primero es el password que tipeo para incresar
y el segundo es el cifrado que viene de la base de datos


Título: Re: Problemas con Password_Verify
Publicado por: MinusFour en 26 Mayo 2021, 00:58 am
Muestran esto en pantalla:

pass es: 1234
pass_hashed es: $2y$10$YNMHUhlZgbSk5OTr6ZAbE.k.CjlFKrXmPMIm5Khtzi2I4hIBMerzq

el primero es el password que tipeo para incresar
y el segundo es el cifrado que viene de la base de datos

Ese hash pertenece al string vacio:

Citar
php > var_dump(password_verify('', '$2y$10$YNMHUhlZgbSk5OTr6ZAbE.k.CjlFKrXmPMIm5Khtzi2I4hIBMerzq'));
bool(true)

De hecho, tu esperas que la variable este vacia:

Código
  1. if(... && empty($password) && ...)

Cuando haces esto:

Código
  1. $password1 = password_hash ($password, PASSWORD_DEFAULT);

Así que es de esperarse que $password es un string vacio.