0
我用下面的方法來生成密碼時用戶的隨機密碼重置生成與openssl_random_pseudo_bytes(PHP)的隨機密碼
$pass = preg_replace('/=*$/', '', base64_encode(openssl_random_pseudo_bytes(40)));
我想他們是隨機足夠用於此目的,對不對? 上述方法或其他更好的方法是否存在風險?
我用下面的方法來生成密碼時用戶的隨機密碼重置生成與openssl_random_pseudo_bytes(PHP)的隨機密碼
$pass = preg_replace('/=*$/', '', base64_encode(openssl_random_pseudo_bytes(40)));
我想他們是隨機足夠用於此目的,對不對? 上述方法或其他更好的方法是否存在風險?
該函數應該很好地生成一個隨機字符串。
發送密碼雖然有缺點,但每個看到電子郵件的人都可以登錄您的網站。通常這是可能的,甚至在幾年之後,因爲用戶不更改密碼。另一件事是,everybdoy可以重置用戶密碼,重複這樣做對用戶來說真的很煩人。
解決此問題的常用方法是,您向用戶發送包含令牌的鏈接(可以使用您的功能完成)。您將該令牌的散列號存儲在數據庫中。如果用戶點擊鏈接並且包含的令牌的散列與您的數據庫條目匹配,則用戶可以自己選擇一個新的密碼。
這是最適合代碼審查http://codereview.stackexchange.com/因爲它是工作代碼,你可能會得到更好的迴應。 – 2014-10-31 03:18:03