hash_equals

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

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.

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.