2013-03-20 63 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