2016-10-17 5 views
2

A) SELECT id, username FROM users WHERE username =? И пароль_hash =?Что лучше? query (sql) или hash_equals

B)hash_equals($password_hash_real, $password_hash_user)

Очевидно, что я вижу, если есть строка выбрана, чтобы увидеть, если пароль правильный.

Что безопаснее?

+4

'password_hash()' и 'password_verify()' это путь, не вопрос. –

+1

Вам нужно было бы получить хэш из БД, чтобы правильно переписать пароль с исходной солью, чтобы вы могли просто просто выбрать id, username, hash, где username =? ', А затем сравнить хэши в php с password_verify(). –

+0

Отлично, я изменил свой код с помощью password_hash и password_verify. Благодарю. – Lucas

ответ

0

Проверка совпадений паролей не является заданием базы данных. Кроме того, вы, вероятно, хотите узнать, существует ли пользователь, хотя хэш не является хорошим. Поэтому я бы сделал это в PHP-скрипте.

hash_equals() не предназначен для проверки пароля с помощью хэша. Используйте password_hash() и password_verify(), так как они добавляют соль и все для вас.

+0

Это правильно, но @Franz решил запрос. Я должен отметить этот ответ как правильный? – Lucas

+0

@ Лукас Всегда полезно отметить ответ как правильный и поделиться ревью. Сейчас ваш вопрос считается еще нерешенным – Cyril