Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник PHP

hash_equals

Сравнивает две строки за одинаковое время.

Синтаксис

hash_equals(string $known_string, string $user_string): bool

Параметры

ПараметрТипОписание
$known_stringstringИзвестное значение.
$user_stringstringЗначение, полученное от пользователя.

Возвращаемое значение

bool`true`, если строки равны.

Примеры

Проверка токена:

<?php
 
$expected = 'a3f9c1';
 
var_dump(hash_equals($expected, 'a3f9c1'));
var_dump(hash_equals($expected, 'a3f9c2'));

Результат:

bool(true)
bool(false)

Примечания

Обычное === прекращает сравнение на первом отличии, и по времени ответа можно подобрать значение. Токены и подписи сравнивайте только этой функцией.

См. также

  • hash_hmac — Вычисляет подпись данных с секретным ключом.
  • password_verify — Проверяет, соответствует ли пароль хешу.
  • strcmp — Сравнивает две строки.

Вопросы и ответы по теме

В учебнике

  • Безопасность — Основы безопасности сайта на PHP — XSS и экранирование, SQL-инъекции, хеширование паролей, CSRF-токены и проверка входных данных.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.