Хобрук: Ваш путь к мастерству в программировании

PHP password_verify всегда возвращает false

Привет, я пытаюсь хешировать свои пароли с помощью password_hash() в PHP. Эта часть в порядке, но для сравнения хеш возвращает false, несмотря ни на что. Чтобы войти в систему, я проверяю базу данных учетных записей пользователей и беру хэш пароля, а затем сравниваю его с введенным паролем. Мой код выглядит так:

$password = $_SERVER["PHP_AUTH_PW"];
$hash = $row["password"];
if (password_verify($password, $hash)) {
    // CREATE SESSION VARIABLES //
}
else{
     header("HTTP/1.1 404 Not Found");
}

Как видите, введенный пароль переносится в заголовок HTTP. Я не думал, что это испортит строку пароля, поскольку я могу сравнить ее непосредственно с паролем в базе данных (без хеширования). Любые идеи? Я трижды проверил свою версию PHP, и я могу хэшировать пароль, так что это не так.


  • Вы проверили, что аргументы, которые вы приводите password_verify, соответствуют вашим ожиданиям? 05.08.2013
  • хорошо, что пароль в базе данных был хеширован с помощью функции password_hash(). Затем он идентифицируется и захватывается введенным именем пользователя и введенным идентификатором компании. Затем введенный пароль сравнивается с хешированным паролем с помощью функции password_verify(). однако он всегда возвращает false 05.08.2013
  • Нет, я имею в виду, проверили ли вы вручную и убедились, что значения $password и $hash являются правильными полученными значениями, независимо от того, проверяются они или нет. 05.08.2013
  • да только что дважды проверил все проходит нормально 05.08.2013
  • Должен ли я хешировать введенный пароль и сравнивать его с хешированным паролем, хранящимся в базе данных? Я понимал, что каждый раз, когда вы хэшируете строку, она будет отличаться, следовательно, функция password_verify(). 05.08.2013
  • Я думаю агностически о том, какие функции вы используете. Эти функции были выпущены в последней основной версии PHP, которую вы видите. Попробуйте хэшировать входящий пароль так же, как сохраненный, и посмотрите, совпадают ли они. 05.08.2013

Ответы:


1

Так что ничего плохого в функции password_verify() нет. В функцию password_hash() добавлен бит строки. Я копирую и вставляю эту функцию из официальной документации:

echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";

Бит "\n" в конце не учитывался функцией проверки. Это было только здесь из-за копирования и вставки, поэтому, как только я удалил его, все было в порядке. Надеюсь, это поможет другим в будущем.

07.08.2013
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..