(PHP 5 >= 5.6.0, PHP 7, PHP 8)
hash_equals — Comparaison de chaînes résistante aux attaques temporelles
$known_string, string $user_string): boolCompare deux chaînes en utilisant la même durée qu'elles soient égales ou non.
Cette fonction devrait être utilisée pour limiter les attaques temporelles ; par exemple, lors d'un test de mots de passe hashés avec crypt().
known_stringLa string de longueur connue servant de référence pour la comparaison
user_stringLa chaîne fournie par l'utilisateur
    Retourne true si les deux chaînes sont égales, false sinon.
  
Exemple #1 Exemple
<?php
$expected  = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$correct   = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$incorrect = crypt('apple', '$2a$07$usesomesillystringforsalt$');
var_dump(hash_equals($expected, $correct));
var_dump(hash_equals($expected, $incorrect));
?>
L'exemple ci-dessus va afficher :
bool(true) bool(false)
Note:
Les deux arguments doivent être de même longueur pour être comparés avec succès. Quand des arguments de longueur différente sont passés,
falseest retourné immédiatement et la longueur de la chaîne connue peut être dévoilée en cas d'attaque temporelle.
Note:
Il est important de passer la chaîne fournie par l'utilisateur en second paramètre plutôt qu'en premier.