Po aktualizacji do php7, BCryptPasswordEncoder zgłasza następujący błąd, np. w sprawie rejestracji przy użyciu FOSUserBundle standardową stronę rejestracji:FOSUserBundle BCryptPasswordEncoder solenie
„Zastosowanie 'sól' opcją password_hash jest nieaktualna w katalogu C: \ xampp \ htdocs \ ascentary \ vendor \ symfony \ symfony \ src \ Symfony \ Komponent \ security \ Rdzeń \ Encoder \ BCryptPasswordEncoder.php linia 81 "C:. \ xampp \ htdocs \ testproject \ vendor \ behat \ behat \ src \ behat \ Testwork \ połączeń \ Handler \ RuntimeCallHandler"
I ve wyśledził ten problem, a problem dotyczy klasy FOS UserManager, która wywołuje:
/**
* {@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();
}
}
Podanie tutaj $ user-> getSalt() zgłasza błąd, ponieważ w php7 nie możesz już przekazywać niestandardowej soli do funkcji bcrypt encoding/password_hash. Ponadto widzę problemu w bazie fos podmiot użytkownika, ponieważ w jej konstruktora, sól jest ustawiony jak:
$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
Pytania:
(1) Jak rozwiązać błąd napisałem powyżej? Może przesłonić UserManager, czy może istnieje rozwiązanie dostarczone przez Fosha?
(2) Jak właściwie zabezpieczyć sól, która jest automatycznie generowana?
(3) Czy są jakieś inne aktualizacje wymagane, takie jak aktualizacja biblioteki ircmaxell?
[bcrypt nie jest algorytmem szyfrowania] (https : //paragonie.com/blog/2015/08/you-wouldnt-base64-a-password-cryptography-decoded) –
Dzięki, fajny artykuł! – user3746259