hash_equals

(PHP 5 >= 5.6.0, PHP 7)

hash_equalsComparaison de chaînes résistante aux attaques temporelles

Description

hash_equals ( string $known_string , string $user_string ) : bool

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().

Liste de paramètres

known_string

La string de longueur connue servant de référence pour la comparaison

user_string

La chaîne fournie par l'utilisateur

Valeurs de retour

Retourne TRUE si les deux chaînes sont égales, FALSE sinon.

Erreurs / Exceptions

Emets une alerte de type E_WARNING quand l'un ou l'autre des paramètres passés n'est pas une chaîne.

Exemples

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)

Notes

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.