我使用以下方法在密码重置期间为用户生成随机密码
$pass = preg_replace('/=*$/', '', base64_encode(openssl_random_pseudo_bytes(40)));
我认为他们为此目的足够随机,对吧? 上述方法或其他更好的方法有风险吗?
答案 0 :(得分:0)
该函数应该可以很好地生成随机字符串。
发送密码有一种不足之处,即每个看过电子邮件的人都可以登录您的网站。由于用户不会更改密码,因此即使在多年后也是如此。另一件事是,everybdoy可以重置用户密码,反复这样做对用户来说真的很烦人。
解决此问题的常用方法是,向用户发送包含令牌的链接(可以使用您的功能完成)。您将此标记的哈希存储在数据库中。如果用户单击链接并且包含的令牌的哈希值与您的数据库条目匹配,则允许用户自己选择新密码。