2014-10-31 113 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可以重置用户密码,重复这样做对用户来说真的很烦人。

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