elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] Problema con password_hash()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Problema con password_hash()  (Leído 4,110 veces)
danny920825

Desconectado Desconectado

Mensajes: 175


Ver Perfil WWW
[Resuelto] Problema con password_hash()
« en: 17 Febrero 2017, 17:06 pm »

Hola a todos. Hace un tiempo Engel Lex y !drvy me ayudaron con el tema de la encriptacion de las contraseñas al insertarlas en las BD. Estaba usando el método
Código
  1. crypt($pass, $salt)
pero según la documentación de PHP,
Código
  1. password_hash($string, PASSWORD_DEFAULT)
tiene un mayor cifrado. Pues bien, en este caso, está contraindicado utilizar un $salt y de hecho en futuras versiones será eliminada la opción. Pues bien, mi problema: Cuando realizo el registro en la BD lo hago de la siguiente forma:

Código
  1. //Página de registro
  2. include "bd.php"
  3. //recoger datos del formulario
  4.        $user=$_POST['usuario'];
  5. $pass=$_POST['password'];
  6.  
  7. //cifrar la contraseña para añadirla a la BD
  8. $cifrar=password_hash($pass, PASSWORD_DEFAULT);
  9.  
  10. $sql="insert into $tabla1 (usuario, password, rank) values ('$user', '$cifrar', 1)";
  11. $consulta = $mysqli->query ($sql) or die ("Problemas al insertar datos:<br>".mysqli_error($mysqli));
  12.  

Y creeme que inserta los datos a la perfección. Ahora... cuando voy a acceder a esos datos, hago lo siguiente:
Código
  1. //Página de registro
  2. include "bd.php"
  3. //recoger datos del formulario
  4.        $user=$_POST['usuario'];
  5. $pass=$_POST['password'];
  6.  
  7. //cifrar la contraseña para añadirla a la BD
  8. $cifrar=password_hash($pass, PASSWORD_DEFAULT);
  9.  
  10. $sql="select * from $tabla1 where usuario='$user' LIMIT 1";
  11. $consulta = $mysqli->query($sql) or die ("Usuario no encontrado");
  12. $reg = $consulta->fetch_array();
  13.  
  14. if (password_verify($cifrar, $reg['password']))
  15.        {
  16.                echo "Las contraseñas coinciden";
  17. }
  18. else
  19. {
  20. echo "Password enviado: ".$cifrar."<br>";
  21. echo "Password almacenado: ". $reg['password'];
  22. }
  23.  

Pero lo que hace es generar un nuevo hash en vez de generar el mismo. Probé escribiendo como contraseña 12345678 para descartar que fuera que escribía mal la contraseña pero nada. No funciona. Y sé que estoy haciendo algo mal porque si es una función recomendada, debe funcionar bien


« Última modificación: 17 Febrero 2017, 19:16 pm por danny920825 » En línea

"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Ayuda] Problema con password_hash()
« Respuesta #1 en: 17 Febrero 2017, 18:05 pm »

estás guardando la contraseña como hash y estás comparando con el texto en limpio, eso obviamente no va a funcionar, si usas password_hash tienes que usar

http://php.net/manual/es/function.password-verify.php


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
danny920825

Desconectado Desconectado

Mensajes: 175


Ver Perfil WWW
Re: [Ayuda] Problema con password_hash()
« Respuesta #2 en: 17 Febrero 2017, 19:16 pm »

Gracias. Ya vi que lo que estaba haciendo era cifrar nuevamente antes de comparar. No me habia dado cuenta que el password_verify lleva el string original y el hash que está guardado. Ok. Tema resuelto entonces
En línea

"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema resuelto gracias.
Multimedia
morbid 0 1,338 Último mensaje 31 Enero 2006, 19:56 pm
por morbid
{Resuelto} [vbs] Problema con autocopiar
Scripting
xassiz_ 4 3,808 Último mensaje 15 Septiembre 2009, 20:45 pm
por xassiz_
[Resuelto] Problema con while
Programación C/C++
Rhertz 1 2,180 Último mensaje 1 Mayo 2011, 02:44 am
por Rhertz
[RESUELTO] Problema con CSS
Desarrollo Web
Miseryk 3 2,257 Último mensaje 28 Agosto 2013, 19:04 pm
por itzg3
[Resuelto] problema CSS
Desarrollo Web
sowi12 8 3,453 Último mensaje 16 Septiembre 2015, 03:09 am
por str_null
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines