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