gpt4 book ai didi

php - FOSUserBundle BCryptPasswordEncoder 加盐

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:40:53 24 4
gpt4 key购买 nike

升级到 php7 后,BCryptPasswordEncoder 抛出以下错误,例如在使用 FOSUserBundle 标准注册页面注册时:

"Use of the 'salt' option to password_hash is deprecated in C:\xampp\htdocs\ascentary \vendor\symfony\symfony\src\Symfony\Component\Security\Core\Encoder\BCryptPasswordEncoder.php line 81 " at C:\xampp\htdocs\testproject\vendor\behat\behat\src\Behat\Testwork\Call\Handler\RuntimeCallHandler."

我已经找到这个问题,问题是 FOS UserManager 类,它调用:

/**
* {@inheritDoc}
*/
public function updatePassword(UserInterface $user)
{
if (0 !== strlen($password = $user->getPlainPassword())) {
$encoder = $this->getEncoder($user);
$user->setPassword($encoder->encodePassword($password, $user->getSalt()));
$user->eraseCredentials();
}
}

在这里传递 $user->getSalt() 会抛出错误,因为在 php7 中,您不再被允许将自定义 salt 传递给 bcrypt 编码/password_hash 函数。此外,我在基本 fos 用户实体中看到一个问题,因为在其构造函数中,盐设置如下:

$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);

问题:

(1) 如何解决我在上面发布的错误?也许重写 UserManager,或者 fos 是否提供了解决方案?

(2) 如何妥善保护自动生成的盐?

(3) 是否需要任何其他更新,例如更新 ircmaxell 库?

最佳答案

升级到 Symfony3。

BCryptPasswordEncoder.php 第 75 行:

if ($salt) {
// Ignore $salt, the auto-generated one is always the best
}

关于php - FOSUserBundle BCryptPasswordEncoder 加盐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34549311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com