2010-08-30 199 views
1

我正在重新在我的網站上註冊我的註冊過程,並且想問我的密碼散列是否正確。或者如果有更好的安全方式,我可以做到。我在某處讀到鹽可以寫入到每個用戶的數據庫。如何安全地存儲註冊/登錄信息,如密碼?

這是迄今爲止我的安全:

$salt = sha1(md5($activecode).$username); 

$username = mysql_real_escape_string($_POST['username']); 
$activecode = mysql_real_escape_string(time()); 
$pass1 = sha1(md5($_POST['pass1'].$salt)); 
$pass2 = sha1(md5($_POST['pass2'].$salt)); 
+1

您不需要在'time'的返回值上應用'mysql_real_escape_string'; 'time'總是返回一個整數值。 – Gumbo 2010-08-30 09:41:36

回答

0

這個非常小的代碼片段與安全性。 以及常識。這兩個密碼的散列有什麼用處?我想你必須比較輸入的密碼,然後做一個哈希。

MD5在這裏確實是錯誤的。只是做它sha1($_POST['pass1'].$salt));

mysql_real_escape tring是一個數據庫相關的功能,而不是形式處理一個。 在將數據添加到查詢之前,恰當的地方使用它。用引號括起來的查詢字符串。

喬說過的話。

0

也許我失去了一些東西,但你曾經如何將將能驗證密碼。你使用鹽的當前時間戳,這意味着當你檢查密碼時,你會得到完全不同的東西。或者你也將活動代碼保存到數據庫中?

如果你這樣做,它看起來很好。

1

你的例子很奇怪。 我覺得第1行在第4行之後?

您當然可以將動態鹽鍵保存到數據庫中。但如果你的md5被泄露,它可能會相處。所以這對彩虹桌不會有任何好處。

當然你可以保存一個鹽鍵到一個單獨的數據庫或其他東西,但我不知道這將是多麼有意思。

無論你做什麼,只在應用程序中保留一個salt鍵。

但更重要的事情是,例如,以 *確保與HTTPS登錄, *強制用戶使用強密碼 *密碼shuold改變每律而 * x秒後logut *提供遠程註銷 ...像這樣的東西

也我認爲雙哈希的東西可能會導致問題。不知道爲什麼,但我沒有看到太多的意義...

相關問題