Для сравнения хешированного пароля с предоставленным пользователем есть утилита StringUtil
предоставлено Symfony.
В документации говорится о «временных атаках»: злоумышленник может иметь полезную информацию о сложности пароля, отслеживая время, необходимое веб-сайту для сравнения предоставленного пароля с тем, который он хранит.
документация говорит также, что
Чтобы избежать временных атак, известная строка должна быть первым аргументом
и введенная пользователем строка вторая.
Почему заказ имеет значение?
На основе текущая версия StringUtils
, это на самом деле не имеет значения. Что имеет значение, так это правильный порядок, например, password_verify()
,
Документация, вероятно, ссылается на 2014 и более ранние версии StringUtils
, который пытался избежать утечки длины строки. Во время обсуждения укрепить этот класс против конфигурации mbstring.func_overload, было решено, что длина утечки неизбежна, длина строки обычно является общедоступной (то есть для MAC), и, как правило, лучше сосредоточиться на предотвращении утечки полезной информации.
В таком случае порядок имел значение, но теперь это не так.
Я бы назвал это устаревшей проблемой документации. я открыл галочку в symfony-docs исправить это.
Других решений пока нет …