En un sistema de inicio de sesión , estoy usando un token de cookie por usuario y dispositivo generado aleatoriamente . Una parte de el script tiene este aspecto:
// Generate current device's token
$token = substr(bin2hex(mcrypt_create_iv(200)), 0, 60);
// Include this device's token
$STH = $userDB->prepare("INSERT INTO devices (user_id, token, active) VALUES (?, ?, 1)");
$Res = $STH->execute(array($Id, $token));
if (!$Res)
throw new Exception("Couldn't store the device in the database");
// To keep users logged in between sessions
$Cookie->email = $email;
$Cookie->token = $token;
Sin embargo, esto implica que si la base de datos fue robada, el atacante podría iniciar sesión como cualquier persona cambiando las cookies . Este es un tema que quiero evitar. Sé que sha256
no es válido para el hashing de contraseña general. Sin embargo, de la cadena de donde viene esto,
$token = substr(bin2hex(mcrypt_create_iv(200)), 0, 60);
¿Es seguro almacenar un hash sha256
del token de alta entropía en la base de datos? ¿O debería utilizar el bcrypt más caro, como con las contraseñas?