Pregunta:
Fecha: 25-01-2019 12:06:10
(En Español)
Si accedo desde el Mysql puedo ver la contraseña del usuario....
Quisiera que no se mostrara la contraseña utilizada.
Para crear el usuario lo tengo en formulario php no sé si tiene algo que ver...
Muchas gracias Votos: 0 - Respuestas: 8 - Vistas: 17 Compartir en: Google Facebook Twitter LinkedIn Link
Encryptar contraseñas[No resuelta]
Hola, como puedo hacer para encryptar las contraseñas de los usuarios?Si accedo desde el Mysql puedo ver la contraseña del usuario....
Quisiera que no se mostrara la contraseña utilizada.
Para crear el usuario lo tengo en formulario php no sé si tiene algo que ver...
Muchas gracias Votos: 0 - Respuestas: 8 - Vistas: 17 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 25-01-2019 12:25:51 Hola
Mira el siguiente tema que posiblemente te sirva para tener una idea Cifrar un Password otro tema Clase Password PHP
En el buscador de la comunidad busca por Password y tal vez encuentres mas temas al respecto.
Saludos Votos: 2 - Link respuesta -
Fecha: 27-01-2019 08:25:54 Esto lleva dos partes: crear una clave encriptada cuando registras al usuario (la cual se almacena en la base de datos) y luego, en el proceso de login, comparar la clave que introdujo el usuario con la clave (encriptada) que se guarda en la base de datos.
Para crear una clave encriptada primero necesitas una clave en "texto plano" (llamemosla $clave_texto_plano), ya sea ingresada por el usuario, ingresada por ti o generada automáticamente como una cadena aleatoria de caracteres.
Esa clave en texto plano se cifra usando la función password_hash():
$clave_cifrada = password_hash($clave_texto_plano, PASSWORD_DEFAULT);
El valor obtenido para $clave_cifrada es lo que se almacena en la base de datos.
Durante el proceso de login, el usuario coloca su clave (llamemosle $clave_ingresada) en el formulario (esta es una clave en texto plano, que es la que el usuario conoce) y en tu script, cifras esa clave y la comparas con la que se encuentra en la base de datos. Ambas deben ser iguales para que el login sea exitoso:
if (password_verify($clave_ingresada, $clave_en_la_base_de_datos)) { // clave ok, login exitoso }
La implicación de este proceso es que la clave se cifra unilateralmente, o sea que no puedes recuperarla. En caso de que el usuario la olvide, solamente puedes generar una nueva.
Espero que te sea de ayuda. Votos: 2 - Link respuesta -
Fecha: 27-01-2019 15:08:46 Es una muy buena respuesta de Juan Vasquez +1
Aprovecho su respuesta para dejar un codigo de ejemplo
<?php $clave_texto_plano ='Abc123'; $clave_cifrada = password_hash($clave_texto_plano, PASSWORD_DEFAULT); if (password_verify($clave_texto_plano, $clave_cifrada)) { echo 'El password es correcto'; }else{ echo 'El password es incorrecto'; } echo "<BR>La clave ingresada es $clave_texto_plano "; echo "<BR>La clave cifrada es $clave_cifrada "; ?>
En el ejemplo password_hash() genera una cadena de 60 caracteres por defecto. En la base de datos deberá tener un campo de una longitud mínima de 60 caracteres para ser almacenado
En el navegador se vería algo como lo siguiente:
El password es correcto
La clave ingresada es Abc123
La clave cifrada es $2y$10$5wzkltUff2wXhiquAciYuextzty71ZvklfCUkGacCX3xfPIGt82Ui

Aclaración:
PASSWORD_DEFAULT - Usar el algoritmo bcrypt (predeterminado a partir de PHP 5.5.0). Observe que esta constante está diseñada para cambiar siempre que se añada un algoritmo nuevo y más fuerte a PHP. Por esta razón, la longitud del resultado de usar este identificador puede cambiar con el tiempo. Por lo tanto, se recomienda almacenar el resultado en una columna de una base de datos que pueda ampliarse a más de 60 caracteres (255 caracteres sería una buena elección).
Saludos Votos: 0 - Link respuesta -
Fecha: 30-01-2019 05:58:59 hola, supongo que tienes un formulario y lo envias a un fichero php que recoge esos datos y los guarda en la tabla mysql ... correcto... pues en ese formulario has de:
$elusuario = $_POST["usuari"]; $elpassword = $_POST["contrasenya"]; $clavecodificada=md5($elpassword); // y aqui ya haces el insert en la base de datos usando $clavecodificada
luego cuando tengas que comprobar el usuario haces lo mismo:
$elusuario = $_POST["usuari"]; $elpassword = $_POST["contrasenya"]; $clavecodificada=md5($elpassword); //accedes a la base de datos y recuperas la contraseña (que esta guardada en la base de datos //encriptada) //y luego haces el if ($variable-guardada-en-la-base-de-datos !== $elpassword) { //haces lo que tengas que hacer... }Votos: 0 - Link respuesta -
Fecha: 30-01-2019 07:35:38 @Toni Dominguez. No es recomendable utilizar md5 para encriptar contraseñas. En el manual de PHP puedes leer: "Advertencia: No se recomienda utilizar esta función para contraseñas seguras debido a la naturaleza rápida de este algoritmo de «hashing»" (http://php.net/manual/es/function.md5.php). También aqui: http://php.net/manual/es/faq.passwords.php#faq.passwords.fasthash Votos: 2 - Link respuesta
-
Fecha: 02-02-2019 08:13:06 @Juan Vasquez. quien dice md5 dice $clavecodificada=password_hash($elpassword, PASSWORD_DEFAULT); por ejemplo !!! Votos: 0 - Link respuesta
-
Fecha: 02-02-2019 12:17:44 @Toni Dominguez: US-CERT ha declarado (desde 2008!) que MD5 es vulnerable (https://www.kb.cert.org/vuls/id/836068/) y lo ha declarado inadecuado para su uso.
Como bien indicó @Walter Sachez, en PHP la función password_hash() usa de forma predeterminada Bcrypt. El algoritomo detrás de Brypt, esencialmente blowfish, fue diseñado para hacerlo inadecuado en aceleración por hardware. Con MD5 sucede lo contrario: fue diseñado para aprovechar la aceleración por hardware. Bcrypt está diseñado para ser más lento que MD5, lo cual hace más difícil para un atacante obtener una clave usando fuerza bruta.
Además, Bcrypt es más que solo un algoritmo: es una función completa de encriptación de claves (asegura que el parámetro salt se genere apropiadamente y además se use), mientras que MD5 es un algoritmo genérico de encriptación que nunca fue diseñado para manejar claves. No están diseñados para lo mismo, son diferentes herramientas para diferentes cosas. MD5 puede usarse para proteger claves de la misma manera que podemos usar un martillo para golpear un tornillo: pude hacerse pero no es bueno. El uso generalizado de MD5 se debe a que, siendo genérico, fue incluido en una gran variedad de aplicaciones y programadores mal informados lo utilizan.
Entonces la cuestión es ¿por qué no usar Bcrypt? Si hay un algoritmo que hace lo mismo pero mejor, ¿por qué no usarlo?
(Más información en https://www.quora.com/What-is-the-difference-between-bcrypt-and-general-hashing-functions-like-MD5) Votos: 3 - Link respuesta -
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión

