hash equals()

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

hash_equals

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

hash_equals — Säker jämförelse av strängar mot timingattacker

Beskrivning

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

Kontrollerar om två strängar är lika utan att läcka information om innehållet i known_string genom exekveringstid.

Denna funktion kan användas för att motverka timingattacker. En vanlig jämförelse med === tar olika lång tid beroende på om värdena är olika och vid vilken position första skillnaden hittas, vilket kan läcka information om innehållet i den hemliga strängen known_string.

Varning: Det är viktigt att ange användarens sträng som den andra parametern, snarare än den första.

Parametrar

known_string: Den hemliga strängen som måste hållas dold.

user_string: Den användar-angivna strängen som ska jämföras.

Returvärden

Returnerar true när de två strängarna är lika, annars false.

Exempel

Exempel #1 hash_equals()-exempel

<?php
$secretKey = '8uRhAeH89naXfFXKGOEj';

// Värde och signatur tillhandahålls av användaren, t.ex. inom URL
// och hämtas med $_GET.
$value = 'username=rasmuslerdorf';
$signature = '8c35009d3b50caf7f5d2c1e031842e6b7823a1bb781d33c5237cd27b57b5f327';

if (hash_equals(hash_hmac('sha256', $value, $secretKey), $signature)) {
    echo "Värdet är korrekt signerat.", PHP_EOL;
} else {
    echo "Värdet har manipulerats.", PHP_EOL;
}
?>

Ovanstående exempel kommer att ge följande resultat:

Värdet är korrekt signerat.

Noter

  • Båda argumenten måste ha samma längd för att jämförelsen ska lyckas. Om argument med olika längd anges returneras omedelbart false, och längden på den kända strängen kan avslöjas vid en timingattack.

Se även

  • hash_hmac() — Genererar ett nyckelbundet hashvärde med HMAC-metoden

Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.hash-equals.php

PHP Funktioner Funktionsreferens


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp och Datorservice som har sponsrat Linux.se med webserver.