Я использую классическую защиту хэширования для пользовательских паролей. Представленный пароль при входе в систему солен, хэширован, а затем сравнивается с уже сохраненным хэшем в базе данных.
Но вместо того, чтобы использовать вызов функции PHP, чтобы сравнить теперь хешированный пользовательский ввод и сохраненный хеш, сравнение выполняется в базе данных – точнее, используя предложение WHERE
(ПРИМЕЧАНИЕ: соль уже известна по разным причинам в то время, когда это сравнение начинается, но пароля нет).
Поскольку имена пользователей уникальны, следующий запрос эффективно говорит о совпадении пары имени пользователя и пароля:
SELECT * FROM `users` WHERE `password`='$password_hash' AND `username`='$username';
Является ли этот подход уязвимым для временных атак?
EDIT : SQL-инъекция не вызывает беспокойства, ее позаботятся.