升級到php7後,BCryptPasswordEncoder會引發以下錯誤,例如:在註冊時使用FOSUserBundle標準註冊頁面:FOSUserBundle BCryptPasswordEncoder salting
「的 '鹽' 選項password_hash的使用在C被棄用:\ XAMPP \ htdocs中\ ascentary \廠商\ symfony的\ symfony的\ SRC \的Symfony \組件\安全\核心\編碼器\ BCryptPasswordEncoder.php線81 「在C:\ XAMPP \ htdocs中\ testproject \供應商\貝哈特\貝哈特的\ src \貝哈特\試驗工作\電話\處理器\ 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 encoding/password_hash函數。另外,我看到基地FOS用戶實體的一個問題,因爲在它的構造,鹽設置,如:
$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
問題:
(1)如何解決我上面張貼的錯誤?也許重寫UserManager,還是有一個由fos提供的解決方案?
(2)如何正確安全的鹽,這是自動生成?
(3)是否需要其他更新,如更新ircmaxell庫?
空[bcrypt是不是一個加密算法(HTTPS ://paragonie.com/blog/2015/08/you-wouldnt-base64-a-password-cryptography-decoded) –
謝謝,好文章! – user3746259