【问题标题】:Does bcrypt + str_random generate a secure password?bcrypt + str_random 会生成安全密码吗?
【发布时间】:2016-05-28 03:13:56
【问题描述】:

我正在为我的应用程序的首次用户创建随机密码。

$password = bcrypt(str_random(12)); 是在 Laravel 5.1 中生成密码的加密安全方式吗?

我可以从这个答案中看出:Laravel str_random() or custom function? str_random() 是不够的。用bcrypt() 包裹它有帮助吗?

此外,密码生成安全性是否有通用或普遍接受的标准?

【问题讨论】:

  • 为其他人生成密码然后(可能)以某种方式发送它根据定义和实践是不安全的。相反,您应该生成密码,或者至少根本不发送和使用它。您应该提供一个链接,人们可以通过该链接将密码重置电子邮件发送到他们的注册地址。该链接基于一次性令牌,应该只能在短时间内使用。

标签: php security laravel laravel-5.1


【解决方案1】:

对于标准用途应该没问题。更大的问题是您将向用户发送/显示密码。一般情况下,密码应该由用户在密码字段中写入(带***),然后进行哈希处理并保存。

【讨论】:

    【解决方案2】:

    使用$password = str_random(12);

    在后台,它尝试使用openssl_random_pseudo_bytesquickRandom(请参阅Laravel str_random() or custom function?)。

    您将生成非常难以猜测的密码。比您的实际用户会选择什么(密码 1234)更难猜。

    您提供的链接讨论了使该功能不适合生成唯一用户 ID 的其他属性。

    同样使用 bcrypt 不会给密码增加任何熵。我知道你的密码生成函数有一个漏洞,可以让我猜测它的输出,那么我需要做的就是对该输出进行加密。关键是对于这个特定的用例,bcrypt 没有增加价值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-22
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      相关资源
      最近更新 更多