0

我正在构建一个登录脚本,我希望用户能够勾选“记住我”按钮。我已经阅读了有关此事的页面:http: //blog.themeforest.net/tutorials/working-with-sessions-and-cookies-in-php-and-mysql/

他们建议通过将随机字符串与用户名连接起来然后用盐对其进行散列来创建一个 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 作为一个长的伪随机字符串?

4

1 回答 1

0

一开始并不明显,但如果它纯粹是某种随机字符串,并且在 MD5 散列之前没有与之关联的身份 - 那么您可能会遇到两个用户最终使用相同身份验证密钥的问题。也就是说,MD5 可能对您有用,但从技术上讲应该逐步淘汰(已发现许多冲突使其不再可行) - 尝试寻找更新的单向哈希,例如 SHA-2

于 2013-03-20T01:19:31.957 回答