maj: sémantique, révision vérification password #3
|
@ -4,4 +4,4 @@
|
||||||
// Utilisation du pipeline partagé pour les applications Symfony de Cadoles
|
// Utilisation du pipeline partagé pour les applications Symfony de Cadoles
|
||||||
// Le nom de l'image Docker passée en paramètre vous permet de préciser l'environnement de test
|
// Le nom de l'image Docker passée en paramètre vous permet de préciser l'environnement de test
|
||||||
// de votre application Symfony
|
// de votre application Symfony
|
||||||
symfonyAppPipeline("ubuntu:20.04")
|
symfonyAppPipeline("ubuntu:22.04")
|
|
@ -27,7 +27,7 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
|
||||||
}
|
}
|
||||||
rmasson marked this conversation as resolved
Outdated
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Pas utilisé
|
* Pas utilisé, mais on doit le garder pour le implements
|
||||||
*/
|
*/
|
||||||
public function hash(string $plainPassword, string $salt = null): string
|
public function hash(string $plainPassword, string $salt = null): string
|
||||||
{
|
{
|
||||||
|
|
|
@ -80,12 +80,7 @@ class SQLLoginUserAuthenticator extends AbstractAuthenticator
|
||||||
if ($remoteHashedPassword) {
|
if ($remoteHashedPassword) {
|
||||||
try {
|
try {
|
||||||
// Comparaison remote hash et hash du input password + salt
|
// Comparaison remote hash et hash du input password + salt
|
||||||
// dump($remoteHashedPassword, $plaintextPassword, $remoteSalt, password_verify($plaintextPassword, $remoteHashedPassword));
|
|
||||||
$this->passwordHasher->verify($remoteHashedPassword, $plaintextPassword, $remoteSalt);
|
$this->passwordHasher->verify($remoteHashedPassword, $plaintextPassword, $remoteSalt);
|
||||||
// if ($this->passwordHasher->needsRehash($remoteHashedPassword)) {
|
|
||||||
// $hash = $this->passwordHasher->hash($plaintextPassword);
|
|
||||||
// $this->sqlLoginService->updatePassword($login, $hash, null);
|
|
||||||
// }
|
|
||||||
$attributes = $this->sqlLoginService->fetchDatas($login);
|
$attributes = $this->sqlLoginService->fetchDatas($login);
|
||||||
$user = new User($login, $remoteHashedPassword, $attributes, $rememberMe);
|
$user = new User($login, $remoteHashedPassword, $attributes, $rememberMe);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Je pense que ce code ne sera pas compatible avec les applications ayant choisies d'utiliser les algorithmes
argon2id
,scrypt
etbcrypt
(qui sont d'ailleurs les recommandations OWASP 1 aujourd'hui).Normalement, en PHP on utilise les méthodes
password_hash()
2 etpassword_verify()
3 pour utiliser ces algorithmes (et d'ailleurs le salt est directement stocké dans le hash final 4).Autre chose: la méthode assume un certain format pour la concaténation des différents éléments à hacher (
$plainPassword.$salt.$this->pepper
). Il est fort peu probable que cette séquence soit toujours respectée dans toutes les applications. À mon avis il serait certainement préférable d'utiliser un patron (avec la méthodestrstr()
5 par exemple) pour permettre à l'utilisateur de spécifiquer le format de concaténation.https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html ↩︎
https://www.php.net/manual/en/function.password-hash.php ↩︎
https://www.php.net/manual/en/function.password-verify.php ↩︎
https://stackoverflow.com/questions/40993645/understanding-bcrypt-salt-as-used-by-php-password-hash ↩︎
https://www.php.net/manual/en/function.strtr.php ↩︎
j'ai utilisé les fonction password_algos() et hash_algos() pour faire la différence entre les algos, pour utiliser hash() ou password_hash()
Mais effectivement le pattern est pas pris en compte