@malishkina2502
Студент

Какой инструмент PHP наиболее подходит для обеспечения безопасности хранения паролей в БД?

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

$password = md5($password);//шифруем пароль
        $password = strrev($password);// для надежности добавим реверс
        $password = $password."wwqwq";//добавляем соль
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Ответ написан
Комментировать
sim3x
@sim3x
Читаем
php.net/manual/en/function.password-hash.php

Потом смемся с
//шифруем пароль
// для надежности добавим реверс
//добавляем соль
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
оф.док.:
Если популярные хэширующие функции не подходят, как же я тогда должен хэшировать свои пароли?
При хэшировании паролей существует два важных соображения: это стоимость вычисления и соль. Чем выше стоимость вычисления хэширующего алгоритма, тем больше времени требуется для взлома его вывода методом "грубой силы".

PHP 5.5 предоставляет встроенное API хэширования паролей, которое безопасно работает и с хэшированием и с проверкой паролей. Также есть » PHP библиотека совместимости, доступная с PHP 5.3.7.

Другой возможностью является функция crypt(), которая поддерживает несколько алгоритмов хэширования в PHP 5.3 и новее. При использовании этой функции вы можете быть уверенным, что выбранный вами алгоритм доступен, так как PHP содержит собственную реализацию каждого поддерживаемого алгоритма, даже в случае, если какие-то из них не поддерживаются вашей системой.

При хэшировании паролей рекомендуется применять алгоритм Blowfish, который также используется по умолчанию в API хэширования паролей, так как он значительно большей вычислительной сложности, чем MD5 или SHA1, при этом по-прежнему гибок.

Учтите, что, если вы используете функцию crypt() для проверки пароля, то вам нужно предостеречь себя от атак по времени, применяя сравнение строк, которое занимает постоянное время. Ни операторы PHP == и ===, ни функция strcmp() не являются таковыми. Функция же password_verify() как раз делает то, что нужно. Настоятельно рекомендуется использовать встроенное API хэширования паролей, если есть такая возможность.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы