Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Cómo almacenar con PHP contraseñas cifradas en base de datos MySQL para los usuarios de tu web

Tiempo de lectura: 2 minutos

Si tienes un sitio web, necesitas almacenar las contraseñas de los usuarios qué se registran de forma segura.

Si almacenamos las contraseñas en texto claro, estamos vulnerando la privacidad de los usuarios y dejamos una puerta abierta para que los hackers que entren al sistema puedan acceder a ellas.

Una forma sencilla de almacenar estas contraseñas es aplicar una función Hash.

Una función Hash es un algoritmo matemático de un solo sentido, es decir, que no se puede revertir. Todos los datos que cifremos utilizando un Hash no se podrán descifrar y tendrán el mismo número de caracteres.

Ejemplo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Palabra: Perro
Función Hash: 33efffe3294
Palabra: Berro
Función Hash: 5f43a2aa94f
Palabra: Perro Función Hash: 33efffe3294 Palabra: Berro Función Hash: 5f43a2aa94f
Palabra: Perro
Función Hash: 33efffe3294

Palabra: Berro
Función Hash: 5f43a2aa94f

Como se puede observar en el ejemplo, la palabra Perro y la palabra Berro solo se diferencian en una letra y generan dos códigos Hash totalmente distintos (la lógica nos diría que cambiaría solo 1 carácter del Hash pero eso no ocurre). Esto quiere decir que no se podrá comparar palabras para intentar adivinar el siguiente Hash.

Lo interesante de todo esto es que almacenaremos contraseñas de un número grande o pequeño de dígitos, pero siempre devolverá el mismo tamaño de Hash.

Ahora te estarás preguntando ¿Cómo utilizamos todo esto?

Hay que entender el Hash cómo la matrícula (es único) de cada contraseña o palabras a las que se aplique. De esta manera lo que hay que hacer es lo siguiente.

Para guardar la contraseña:

  1. El usuario introduce su contraseña en texto claro.
  2. El sistema aplica una función Hash segura y genera la cadena Hash.
  3. El sistema almacena esta cadena Hash como la contraseña asociada al usuario.

Para identificarse en el sistema:

  1. El usuario introduce su contraseña en texto claro.
  2. El sistema aplica la misma función Hash que al almacenarla en el paso anterior.
  3. El sistema hace un select de la contraseña almacenada (cadena Hash) y la compara con el Hash generado.
  4. Si son iguales, ¡Bingo!, usuario autenticado en el sistema.

En PHP quedaría algo así:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
$contra = "Perro";
$contraHash = hash('md5', $contra);
?>
<?php $contra = "Perro"; $contraHash = hash('md5', $contra); ?>
<?php
$contra = "Perro";
$contraHash = hash('md5', $contra);
?>

En la línea

$contraHash = hash('md5', $contra);
$contraHash = hash('md5', $contra); se genera la cadena Hash utilizando md5, puedes utilizar distintos cifradores.

Puedes consultar los distintos cifradores disponibles en esta web: https://www.php.net/manual/es/function.hash.php

Ahora ya sabemos cómo almacenar de forma correcta las contraseñas de los usuarios que se registren.

0

Deja un comentario