(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_string
La string de longueur connue servant de référence pour la comparaison
user_string
La 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,
FALSE
est 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.