Nach einem Upgrade auf php7 gibt der BCryptPasswordEncoder den folgenden Fehler aus, z. bei der Anmeldung bei der Verwendung von FOSUserBundle Standard Registrierungsseite:FOSUserBundle BCryptPasswordEncoder salting
„Die Nutzung der Option 'Salz' ist in C veraltet password_hash: \ xampp \ htdocs \ ascentary \ Anbieter \ symfony \ symfony \ src \ Symfony \ Component \ Security \ Core \ Encoder \ BCryptPasswordEncoder.php Linie 81 "an. C: \ xampp \ htdocs \ Testproject \ Anbieter \ Behat \ Behat \ src \ Behat \ Testwork \ Anruf \ Handler \ RuntimeCallHandler"
I‘ Dieses Problem wurde aufgespürt, und das Problem ist die FOS UserManager-Klasse, die folgendes aufruft:
/**
* {@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();
}
}
Hier übergeben $ user-> getSalt() den Fehler, da es bei php7 nicht mehr möglich ist, eine benutzerdefinierte Funktion für die Funktion "bclypt coding/password_hash" an salt zu übergeben. Darüber hinaus sehe ich ein Problem in der Basis fos Benutzer Einheit, weil in seinem Konstruktor wird das Salz gesetzt wie:
$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
Fragen:
(1), wie der Fehler lösen ich oben geschrieben? Vielleicht überschreibt der UserManager oder gibt es eine Lösung von fos?
(2) Wie wird das Salz, das automatisch erzeugt wird, ordnungsgemäß geschützt?
(3) Sind weitere Aktualisierungen erforderlich, z. B. die Aktualisierung der ircmaxell lib?
[bcrypt ist kein Verschlüsselungsalgorithmus] einstellen (https : //paragonie.com/blog/2015/08/you-wouldnt-base64-a-password-cryptography-decoded) –
Danke, schöner Artikel! – user3746259