(PHP 5 >= 5.6.0, PHP 7)
hash_equals — Comparaison de chaînes résistante aux attaques temporelles
$known_string
, string $user_string
)Compare 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.
Emets une alerte de type E_WARNING quand l'un ou l'autre des
paramètres passés n'est pas une chaîne.
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.