2014-10-31 194 views
0

我用下面的方法來生成密碼時用戶的隨機密碼重置生成與openssl_random_pseudo_bytes(PHP)的隨機密碼

$pass = preg_replace('/=*$/', '', base64_encode(openssl_random_pseudo_bytes(40))); 

我想他們是隨機足夠用於此目的,對不對? 上述方法或其他更好的方法是否存在風險?

+0

這是最適合代碼審查http://codereview.stackexchange.com/因爲它是工作代碼,你可能會得到更好的迴應。 – 2014-10-31 03:18:03

回答

0

該函數應該很好地生成一個隨機字符串。

發送密碼雖然有缺點,但每個看到電子郵件的人都可以登錄您的網站。通常這是可能的,甚至在幾年之後,因爲用戶不更改密碼。另一件事是,everybdoy可以重置用戶密碼,重複這樣做對用戶來說真的很煩人。

解決此問題的常用方法是,您向用戶發送包含令牌的鏈接(可以使用您的功能完成)。您將該令牌的散列號存儲在數據庫中。如果用戶點擊鏈接並且包含的​​令牌的散列與您的數據庫條目匹配,則用戶可以自己選擇一個新的密碼。