Безопасность пароля
Задание:
Наверняка вы знаете, что пароли перед сохранением в базу данных шифруют и никогда не хранят их в открытом виде. Этот процесс обычно называют хэшированием, и нужно оно для того, чтобы, даже если из нашей базы украдут пароли, прямого доступа к аккаунтам пользователей у злоумышленников всё равно не было. Более того, при таком подходе даже администратор сайта не будет знать ваш пароль, так как в таблице храниться будет только его хэш. Итак, задание на сегодня - захэшировать пароль нового пользователя, который регистрируется на нашем сайте.
Подробная инструкция:
- Для начала нам нужен сам пароль, обычно при регистрации мы получаем его с формы
- Пропускаем пароль через функцию
password_hash()
, вторым параметром передавая ей константуPASSWORD_DEFAULT
- Полученную в конечном итоге строку можно сохранять в базу данных
ПОЯСНЕНИЯ И ПОЛЕЗНАЯ ИНФОРМАЦИЯ
- Шифровать с помощью этой функции можно не только пароли, но и, например, значения cookies, если это необходимо.
- При использовании этого метода хэширования немного усложняется проверка валидности пароля при авторизации. Чтобы проверить, верно ли пользователь ввёл пароль, используют специальную функцию
password_verify()
.
- Раньше очень распространёнными методами являлись
md5()
иsha1()
, однако сейчас они считаются устаревшими и небезопасными. Их оба довольно просто взломать, поскольку для простых хэшей, которые выдают такие функции, давно существуют готовые словари и "радужные таблицы", а разработчики для шифрования зачастую не используют соль - строку, которая передаётся хеширующей функции вместе с паролем, и служащую как раз для защиты от взлома методом подбора по словарю/таблице.password_hash()
решает эту проблему, генерируя свою собственную соль и используя при этом более современные хэш-алгоритмы.
- Если вам легко далась информация из этого урока и вы хотите узнать чуть больше - подробно про все функции, упомянутые в этом уроке, методы шифрования и нюансы работы с ними, можно почитать в документации
PHP.net
, а так же в открытом доступе сети интернет :)
Расскажите всем
Поделиться
Поделиться
Отправить