Almacenamiento de las contraseñas en PHP

RECU-0581 (Recurso Ejemplo)

Descripción

Este ejemplo muestra cómo alamcenar las claves en una base de datos utilizando el algoritmo SHA-512 en PHP.

Ejemplos

Es necesario tener bajo control las contraseñas de los usuarios para que puedan acceder a su sitio web.

Nunca se deben almacenar contraseñas en texto plano en una base de datos. En su lugar, almacene el hash de la contraseña, y haga uso de un salto para obtener mejores resultados:


<?php
/ $password contains the password. /

$salt = 'SHIFLETT';
$password_hash = hash('sha256', $salt . hash('sha256', $password . $salt));

/* Store password hash.*/
?>


Cuando se quiere determinar cuando un usuario ha introducido una contraseña correcta, hash provee la contraseña usando la misma técnica y comparando los hashes.


<?php

$salt = 'SHIFLETT';
$password_hash = hash('sha256', $salt . hash('sha256',$_POST['password'] . $salt));
/* Compare password hashes. */
?>


Si los valores hash son idénticos, entonces se asegura que las contraseñas son también idénticas. Usando esta técnica, no es posible recordar a los usuarios cuáles son sus contraseñas. Cuando un usuario se olvida de su contraseña, en lugar de dejar crear uno nuevo, almacena el hash de la contraseña nueva en la base de datos. Por supuesto, se debe ser muy cuidadoso para identificar al usuario correctamente ya que estos mecanismos son blanco frecuente de ataques y una fuente común de vulnerabilidades de seguridad.


Contenidos relacionados

Pautas
Área: Desarrollo » Seguridad » Cifrado
Código Título Tipo Carácter
LIBP-0256 Almacenamiento de claves Libro de pautas Directriz Obligatoria
LIBP-0274 Encriptación de la información sensible Libro de pautas Directriz Obligatoria