In un sistema di accesso che sto facendo , sto usando un token di cookie generato dall'utente per dispositivo, generato a caso . Una parte di lo script ha il seguente aspetto:
// 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;
Tuttavia, questo implica che se il database è stato rubato, l'utente malintenzionato potrebbe accedere come chiunque modificando i cookie . Questo è un problema che voglio evitare. So che sha256
non è valido per l'hashing della password generale. Tuttavia, dalla stringa proviene,
$token = substr(bin2hex(mcrypt_create_iv(200)), 0, 60);
È sicuro memorizzare un hash sha256
del token ad alta entropia nel database? O dovrei usare il bcrypt più costoso, come con le password?