hash_equals
Сравнивает две строки за одинаковое время.
Синтаксис
hash_equals(string $known_string, string $user_string): boolПараметры
| Параметр | Тип | Описание |
|---|---|---|
| $known_string | string | Известное значение. |
| $user_string | string | Значение, полученное от пользователя. |
Возвращаемое значение
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-токены и проверка входных данных.