2013-03-20 62 views
0

我正在构建登录脚本,我希望用户能够勾选“记住我”按钮。 我已阅读此页:http://blog.themeforest.net/tutorials/working-with-sessions-and-cookies-in-php-and-mysql/使用持久cookie验证用户身份。哈希和盐必需?

他们建议创建一个auth_key通过连接随机字符串与用户名,然后用盐散列它。

$cookie_auth= rand_string(10) . $username; 
$auth_key = md5($salt . $cookie_auth); 
$auth_query = mysql_query("UPDATE users SET auth_key = '" . $auth_key . "' WHERE username = '" . $username . "'"); 

我只是想知道,究竟是做线1 & 2点?你不能只是跳过盐和散列,只是创建$ auth_key作为一个长的伪随机字符串?

回答

0

起初并不明显,但如果它是纯粹的某种随机化字符串,并且在MD5哈希之前没有与其绑定的身份,那么您可能会遇到两个用户最终拥有相同身份验证密钥的问题。也就是说,MD5可能会为你工作,但技术上应该被逐步淘汰(发现许多碰撞使其不再可行) - 尝试寻找新的单向散列,如SHA-2