Безопасность пароля

Задание:  

         Наверняка вы знаете, что пароли перед сохранением в базу данных шифруют и никогда не хранят их в открытом виде. Этот процесс обычно называют хэшированием, и нужно оно для того, чтобы, даже если из нашей базы украдут пароли, прямого доступа к аккаунтам пользователей у злоумышленников всё равно не было. Более того, при таком подходе даже администратор сайта не будет знать ваш пароль, так как в таблице храниться будет только его хэш. Итак, задание на сегодня - захэшировать пароль нового пользователя, который регистрируется на нашем сайте.

 

 

Подробная инструкция:

 

  • Для начала нам нужен сам пароль, обычно при регистрации мы получаем его с формы
  • Пропускаем пароль через функцию password_hash(), вторым параметром передавая ей константу PASSWORD_DEFAULT 
  • Полученную в конечном итоге строку можно сохранять в базу данных

ПОЯСНЕНИЯ И ПОЛЕЗНАЯ ИНФОРМАЦИЯ

 

  • Шифровать с помощью этой функции можно не только пароли, но и, например, значения cookies, если это необходимо.

 

  • При использовании этого метода хэширования немного усложняется проверка валидности пароля при авторизации. Чтобы проверить, верно ли пользователь ввёл пароль, используют специальную функцию password_verify().

 

  • Раньше очень распространёнными методами являлись md5()и sha1(), однако сейчас они считаются устаревшими и небезопасными. Их оба довольно просто взломать, поскольку для простых хэшей, которые выдают такие функции, давно существуют готовые словари и "радужные таблицы",  а разработчики для шифрования зачастую не используют соль - строку, которая передаётся хеширующей функции вместе с паролем, и служащую как раз для защиты от взлома методом подбора по словарю/таблице. password_hash() решает эту проблему, генерируя свою собственную соль и используя при этом более современные хэш-алгоритмы.

 

  • Если вам легко далась информация из этого урока и вы хотите узнать чуть больше - подробно про все функции, упомянутые в этом уроке, методы шифрования и нюансы работы с ними, можно почитать в документации PHP.net, а так же в открытом доступе сети интернет :)
Расскажите всем
Поделиться
Отправить