Intereting Posts
simplexml получает значение узла без typecasting Формат \ n \ n в \ n и отключить уникальный \ n в PHP (a la reddit) XPath и PHP: ничего не работает должным образом Как использовать документ PHP DOM? TCPDF – Pagenumbers не совсем правильно выровнены Добавьте «.active» класс к ссылке текущей страницы в меню с помощью jQuery или PHP как пропустить элементы в цикле foreach PHP XML: Недопустимое смещение, но оно в массиве? Codeigniter Download Helper повреждает .7z и .rar файлы помощи или альтернативных решений? Выполнение команды Laravel / Symfony / Artisan в фоновом режиме Настройка службы RESTful для Backbone.js с помощью apache и windows Как динамически передавать значения флажка выбора в столбцы переменных ajax-вызовов для переменных php Примените байесовский средний показатель в 5-звездной рейтинговой системе Есть ли в PHP встроенный отладочный журнал, например Ruby on Rails logger.info (), в файл development.log? какая разница между циклами и для каждого цикла в php

Где соль хранится для password_hash?

Согласно (относительно) новой документации PHP:

Функция password_hash использует случайную соль (которую мы не должны беспокоиться о .. O_O), поэтому, если я правильно понимаю, что соль должна храниться где-то, иначе пользователь не сможет войти в систему после регистрации на веб-сайте (разная соль => другой хеш.)

Документация по функциям ничего не говорит о взаимодействии с БД, и поскольку я думаю, что сохранение данных для каждого пользователя масштабируется только с помощью БД, где черт делает эту функцию, хранящую случайную соль? txt файл, такой как данные сеанса?

Давайте узнаем на примере, что все остальные говорят вам:

 $options = [ 'cost' => 11, 'salt' => 'abcdefghijklmnopqrstuv', ]; echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT, $options)."\n"; 

Вывод:

$ 2y $ 11 $ abcdefghijklmnopqrstu u7aZVUzfW85EB4mHER81Oudv / rT.rmWm

Выделенные части – это ваши затраты и соль, соответственно встроенные в полученный хеш.

Вы можете переплести это обратно в password_verify и он будет обрабатывать его соответственно:

 print_r(password_verify('rasmuslerdorf', '$2y$11$abcdefghijklmnopqrstuu7aZVUzfW85EB4mHER81Oudv/rT.rmWm')); // true 

В инструкциях password_hash указано

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

Поэтому соль уже включена в хэш, который вы спасли в дБ.