【问题标题】:Generate random password with openssl_random_pseudo_bytes (PHP)使用 openssl_random_pseudo_bytes (PHP) 生成随机密码
【发布时间】:2014-12-27 07:42:54
【问题描述】:

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

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

我想它们对于这个目的来说是足够随机的,对吧? 上述方法或其他更好的方法有什么风险吗?

【问题讨论】:

标签: php security random passwords


【解决方案1】:

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

不过,发送密码有一个缺点,即每个看到电子邮件的人都可以登录您的网站。通常,即使在多年之后,这也是可能的,因为用户不会更改密码。另一件事是,每个人都可以重置用户密码,重复这样做对用户来说真的很烦人。

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

【讨论】:

    猜你喜欢
    • 2010-12-22
    • 2011-08-31
    • 2010-09-08
    • 1970-01-01
    • 2012-08-07
    • 2012-11-06
    • 2021-06-18
    相关资源
    最近更新 更多