0

在 Symfony 4.3 中,推荐使用auto编码算法选项:

# config/packages/security.yaml
security:
# ...

encoders:
    # use your user class name here
    App\Entity\User:
        # Use native password encoder
        # This value auto-selects the best possible hashing algorithm.
        algorithm: auto

我的问题是关于上面代码中的评论:如果“最好的”算法发生变化,算法会改变吗?如果是这样,这将如何影响当前存在的存储密码?

4

1 回答 1

1

是的。

根据关于 Symfony Github 存储库上一个问题的评论:

[安全] 4.3 总是“错误的凭据”。使用算法“自动”

钠无法验证 bcrypt 密码,这就是问题所在。当然,如果没有迁移计划,您就不能从 sha512 迁移到 auto/native/sodium(将在 4.4 中提供)

我想libsodium将确保兼容性。所以我想密码已经用以前的“最好的”算法散列的用户将能够登录,但他们的密码不会用新的“最好的”算法重新散列。

至于使用 libsodium 不支持的算法(例如bcrypt)散列的密码,如果您不告诉 Symfony 专门为这些用户使用哪个编码器,用户将无法登录

请参阅https://symfony.com/doc/current/security/named_encoders.htmlgetEncoderName()中的方法,了解如何使用多个编码器并告诉 Symfony 使用哪一个。

于 2019-09-10T13:19:48.823 回答