使用openssl_random_pseudo_bytes(PHP)生成随机密码

时间:2014-10-31 03:14:21

标签: php security random passwords

我使用以下方法在密码重置期间为用户生成随机密码

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

我认为他们为此目的足够随机,对吧? 上述方法或其他更好的方法有风险吗?

1 个答案:

答案 0 :(得分:0)

该函数应该可以很好地生成随机字符串。

发送密码有一种不足之处,即每个看过电子邮件的人都可以登录您的网站。由于用户不会更改密码,因此即使在多年后也是如此。另一件事是,everybdoy可以重置用户密码,反复这样做对用户来说真的很烦人。

解决此问题的常用方法是,向用户发送包含令牌的链接(可以使用您的功能完成)。您将此标记的哈希存储在数据库中。如果用户单击链接并且包含的​​令牌的哈希值与您的数据库条目匹配,则允许用户自己选择新密码。