hash_equals

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

hash_equalsComparação de strings segura para ataque de temporização

Descrição

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

Verifica se duas strings são iguais sem vazar informações sobre o conteúdo de known_string por meio do tempo de execução.

Esta função pode ser usada para mitigar ataques de temporização. Executar uma comparação regular com === levará mais ou menos tempo para executar dependendo se os dois valores são diferentes ou não e em qual posição a primeira diferença pode ser encontrada, vazando assim informações sobre o conteúdo do known_string secreto.

Cuidado

É importante fornecer a string fornecida pelo usuário como o segundo parâmetro, em vez do primeiro.

Parâmetros

known_string

A string conhecida que deve ser mantida em segredo.

user_string

A string fornecida pelo usuário para comparação.

Valor Retornado

Retorna true quando as duas strings são iguais, false caso contrário.

Exemplos

Exemplo #1 Exemplo de hash_equals()

<?php
$secretKey
= '8uRhAeH89naXfFXKGOEj';

// O valor e a assinatura são fornecidos pelo usuário, por exemplo, dentro da URL
// e recuperados usando $_GET.
$value = 'username=rasmuslerdorf';
$signature = '8c35009d3b50caf7f5d2c1e031842e6b7823a1bb781d33c5237cd27b57b5f327';

if (
hash_equals(hash_hmac('sha256', $value, $secretKey), $signature)) {
echo
"O valor está assinado corretamente.", PHP_EOL;
} else {
echo
"O valor foi adulterado.", PHP_EOL;
}
?>

O exemplo acima produzirá:

O valor está assinado corretamente.

Notas

Nota:

Ambos os argumentos devem ter o mesmo comprimento para serem comparados com sucesso. Quando argumentos de comprimentos diferentes são fornecidos, false é retornado imediatamente e o comprimento da string conhecida pode ser vazado em caso de um ataque de temporização.

Veja Também

  • hash_hmac() - Gera um valor de hash com chave usando o método HMAC

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top