PHP best practices — хранение паролей

Хеширование — стандартная модель хранения паролей. В её основе лежит какой-то алгоритм, который меняет строку вида 1234 на хеш вида ab3278abeh27jan2j37jdbb. Тем самым, пароль в явном виде узнать невозможно.
Зато можно ответить при авторизации на один вопрос: верен ли пароль что вводит пользователь или нет?

Тем самым мы прогоняем пароль 1234 нашей функцией и смотрим, получили ли мы хеш ab3278abeh27jan2j37jdbb или нет. Если получили, значит пароль верен и мы можем авторизовать пользователя.
Данная схема удобна, т.к никто не знает пароль в явном виде кроме пользователя.

В PHP до недавнего времени использовалась хеш функция md5.
MD5 это старый 128 битный алгоритм хеширования. Разработан он был еще в 1991 году. Сейчас данный алгоритм использовать не рекомендуется.

Зато в версиях PHP5.3+ появилась встроенная хеш функция для паролей:

$hashedPassword = password_hash('my super password', PASSWORD_DEFAULT);

Данная функция сама хеширует ваш пароль надёжным алгоритмом хеширования.

Чтобы проверить достаточно вызвать функцию:

$result = password_verify('the wrong password', $hashedPassword); // вернёт false

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.