hash_equals

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

hash_equalsComparaison de chaînes résistante aux attaques temporelles

Description

hash_equals(#[\SensitiveParameter] string $known_string, #[\SensitiveParameter] string $user_string): bool

Vérifie si deux chaînes de caractères sont égales sans divulguer d'informations sur le contenu de known_string via le temps d'exécution.

Cette fonction peut être utilisée pour atténuer les attaques temporelles. L'exécution d'une comparaison régulière avec === prend plus ou moins de temps selon que les deux valeurs sont différentes ou non et selon la position à laquelle la première différence peut être trouvée, laissant ainsi filtrer des informations sur le contenu de la known_string secrète.

Attention

Il est important de passer la chaîne fournie par l'utilisateur en tant que second paramètre plutôt qu'en premier.

Liste de paramètres

known_string

La chaîne de caractères connue qui doit être gardée secrète.

user_string

La chaîne fournie par l'utilisateur à comparer contre.

Valeurs de retour

Retourne true si les deux chaînes sont égales, false sinon.

Exemples

Exemple #1 Exemple avec hash_equals()

<?php
$secretKey
= '8uRhAeH89naXfFXKGOEj';

// La valeur et la signature sont fournies par l'utilisateur, par ex. dans l'URL
// et récupérées en utilisant $_GET.
$value = 'username=rasmuslerdorf';
$signature = '8c35009d3b50caf7f5d2c1e031842e6b7823a1bb781d33c5237cd27b57b5f327';

if (
hash_equals(hash_hmac('sha256', $value, $secretKey), $signature)) {
echo
"La valeur est correctement signée.", PHP_EOL;
} else {
echo
"La valeur a été altérée.", PHP_EOL;
}
?>

L'exemple ci-dessus va afficher :

La valeur est correctement signée.

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.

Voir aussi

  • hash_hmac() - Génère une valeur de clé de hachage en utilisant la méthode HMAC

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top