我會盡力在最好的解釋..如何加密的純文本格式的MD5哈希密碼
在我的項目開始我只是儲存在純文本格式的密碼,現在才上傳到服務器,我想與MD5哈希他們,當用戶登錄,他使用簡單的密碼作爲前..
只是他們應該在數據庫被散列..
是我應該做的,在不改變很多編碼和登錄腳本?
如何添加記住密碼功能並忘記密碼功能簡單的登錄頁面?任何可以將我的問題分類的鏈接。
我正在使用php和sql。
我會盡力在最好的解釋..如何加密的純文本格式的MD5哈希密碼
在我的項目開始我只是儲存在純文本格式的密碼,現在才上傳到服務器,我想與MD5哈希他們,當用戶登錄,他使用簡單的密碼作爲前..
只是他們應該在數據庫被散列..
是我應該做的,在不改變很多編碼和登錄腳本?
如何添加記住密碼功能並忘記密碼功能簡單的登錄頁面?任何可以將我的問題分類的鏈接。
我正在使用php和sql。
至於你的MD5的問題:
UPDATE users SET password = MD5(password)
在您的登錄腳本,請在驗證用戶的憑據,您只需通過添加MD5函數,以及:
SELECT id FROM users WHERE login = :login AND password = MD5(:password)
有關密碼丟失功能的第二個問題在SO上有extensive coverage。
PHP有一個MD5函數(如你可能知道):
$password = mysql_result(mysql_query(SELECT `password` from `users`), 1);
$password = md5($password);
mysql_query(UPDATE `users` set `password` = '$password');
(很明顯,你需要調整上面的代碼與數據庫結構工作)
如果你的數據庫使用phpMyAdmin還有一個內置的MD5功能,您可以在理論上使用它來一次更新所有表格。
你的第一個問題 運行此查詢
UPDATE urusertable SET password=md5(password);
,併爲您的第二個問題 當用戶檢查烏爾讓我登錄複選框 檢查它,然後設置一個cookie您所需的時間,,
if(isset($_POST['remember'])){
setCookie('rememberhim','whateverurvalue',time()+3600*7);
}
然後每次用戶訪問您的網站時檢查cookie。 如果您只是想自動填充登錄域,還要將用戶名和密碼存儲在cookie中,但這對於自動填充是一個非常糟糕的做法。
一次提出一個問題。 – Rikesh 2013-05-02 06:25:53
不要這樣做!如果您將密碼的MD5ed版本作爲用戶必須發送的密碼,那麼攻擊者必須知道MD5密碼才能進入一個帳戶,而該帳戶使用MD5毫無意義!用戶必須將真實密碼發送到服務器,然後在與數據庫中的密碼進行比較之前,使用與服務器上存儲的密碼*相同的算法對其進行哈希處理。 – Quentin 2013-05-02 06:27:52
MD5 [不管怎樣都不適合存儲密碼](http://www.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash) – Quentin 2013-05-02 06:28:15