@MdaUZH

Криптография, хэширование пароля password_hash?

Всем привет, все было хорошо, до того как я прочел очередную статью о хэшировании паролей и криптографии.
Сколько не читал, только все встает в колею и ведет меня к единственному и логичному ответу, как вдруг встречается другая статья, которая переворачивает все вверх дном.

В общем, пара вопросов:
1. Нужно и безопасно ли использовать password_hash для хэширования пароля?
2. Разумно ли использовать PASSWORD_DEFAULT или лучше использовать свою соль (если соль, то разумно ли хранить свою соль для каждого пользователя в бд ? - или как это делается?)

2.2 Ведь php постоянно расширяется, все меняется, вскоре может изменится все и появится ещё более лучший механизм для хеширования, а с своей солью менять особо ничего не придется, так будет проще.
2.2.1 Или как вариант, изменить вообще метод хеширования ( что я думал не совсем реально, если зарегестрированно множество пользователей )

Буду очень благодарен :)
  • Вопрос задан
  • 210 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Нужно и безопасно ли использовать password_hash для хэширования пароля?


Да, нужно и это безопасно. Более того, не забываем проверять пароль через password_verify

Разумно ли использовать PASSWORD_DEFAULT или лучше использовать свою соль (если соль, то разумно ли хранить свою соль для каждого пользователя в бд ? - или как это делается?)


Разумно, потому что большинство разработчиков не сильно замарачиваются с генерацией соли. По поводу хранения в БД - она хранится прямо в строке, выдаваемой после хэширования пароля, если что. Не парьтесь по этому поводу. Суть соли в увеличении времени подбора пароля. Точно так же как и использование медленных алгоритмов типа bcrypt.

Ведь php постоянно расширяется, все меняется, вскоре может изменится все и появится ещё более лучший механизм для хеширования


PHP можно считать достаточно взрослым языком, там очень строго с обратной совместимостью. Ну и да - механизмы хэширования лучше не придумают, могут придумать лучше алгоритм (например сейчас повсеместно используется bcrypt, в том числе в php по умолчанию, но уже есть scrypt который лучше, но который еще не прошел проверку временем).

Или как вариант, изменить вообще метод хеширования


Bcrypt должно хватать. Для новых пользователей можно юзать уже другой метод, а старых просить сменить пароль. Куча разных стратегий.
Ответ написан
Комментировать
@Fellzo
Да нужно и да безопасно. Стандартная соль генерируется каждый раз рандомно и хранится в самом пароле.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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