Хеширование паролей на PHP по новому: забываем про md5  

Большинство разработчиков и CMS старого образца выполняют хеширование паролей на php, используя устаревшие алгоритмы  sha256  и md5, что ставит под угрозу защищенность данных пользователей. На данный момент хранение паролей осуществляется в базе данных, а значит, при получении доступа, злоумышленник сможет, используя несложные алгоритмы, с учетом текущего технического развития, расшифровать данные старого образца в течение короткого промежутка времени. 

Алгоритмы хеширования на PHP начиная с версии 5.5 

С выходом PHP 5.5 работа с паролями значительно упрощается. Появился API хеширования, в состав которого входит четыре функции: 
  1. password_hash(string $password, int $algo [, array $options(salt, cost) ]): выполняет хеширование, принимает 3 аргумента - пароль, используемый алгоритм хеширования, ассоциативный массив с опциями: salt - соль, cost - алгоритмическая стоимость вычисления пароля. Если последний аргумент отсутствует, будет создана случайная соль и использована алгоритмическая стоимость вычисления по умолчанию. Возвращает зашифрованный пароль или FALSE в случае возникновения ошибки;
  2. password_verify(string $password, string $hash): проверяет, соответствие пароля с заданным хэшем. Этот хэш может быть создан с помощью password_hash() или обычный crypt() хэш. Возвращает TRUE, если пароль и хэш соответствуют или в противном случае FALSE;
  3. password_needs_rehash(string $hash, string $algo [, string $options ]): проверяет, соответствует ли предоставленный хэш заданному алгоритму и опциям. Если нет, то считается, что хэш должен быть изменён. Принимает три аргумента - проверяемый хэш, используемый алгоритм хеширования пароля, ассоциативный массив с опциями аналогичными опциям из функции password_hash(). Возвращает TRUE, если хэш должен быть изменён, чтобы соответствовать данному алгоритму и опциям, или в противном случае FALSE;
  4. password_get_info(string $hash): Возвращает информацию о данном хэше. Возвращает ассоциативный массив с тремя элементами(ключами): алгоритм(algo), который будет соответствовать константе алгоритма пароля, название алгоритма(algoName), которое имеет человечески читаемое название алгоритма, ассоциативный массив с опциями (options), который включает в себя возможности, предоставляемые при вызове password_hash().

Дополнительные параметры хеширования

При создании хэша возможно использование следующих констант: 
  1. PASSWORD_BCRYPT = 1: используется для создания нового хэш пароля с использованием алгоритма CRYPT_BLOWFISH;
  2. PASSWORD_DEFAULT = PASSWORD_BCRYPT: используется алгоритм хеширования по умолчанию, если алгоритм не задан. Он может измениться в новых версиях PHP, когда будут поддерживаться новые, более эффективные (например, Scrypt) алгоритмы хеширования.

Генерация соли для пароля

Чем выше значение параметра cost, тем выше эффективность защиты, поэтому следует увеличивать его, в зависимости от технической оснащенности используемого оборудования. Так же одним из главных преимуществ является полная автономия параметра salt (теперь он хранится в хэше), который можно генерировать автоматически и не хранить в отдельном поле. 
$options = [
          'salt' => custom_function_for_salt(),	# собственный код для генерации соли 
          'cost' => 12	# по умолчанию используется 10 
];
$hash = password_hash($password, PASSWORD_DEFAULT, $options);
Лого https://piploid.ru
15.12.2019 в 22:22Основы Javascript. Урок 2. Преобразование типовВ рамках урока узнаем: как в Javascript явно преобразовать один тип данных в другой и к чему приводят операции с разными типами02.12.2019 в 23:21Основы Javascript. Урок 1. Типы данныхВ первом уроке разберем существующие типы данных, а также способы их определения и официально признанные ошибки языка!24.05.2019 в 17:40Как оформлять статьи. Краткий справочник по быстрому SEOВы пишете интересные тексты, но никто не читает? Вероятно вы не соблюдаете даже половины из перечисленных в статье правил!03.04.2019 в 11:49Что такое доменное имя и где его купитьДавайте разберемся: что такое доменное имя и в чем отличие зоны RU от COM, где купить домен и как оформить его на себя26.03.2019 в 11:44Как собрать семантическое ядро для сайтаНебольшой гайд по правильному сбору семантики для своего сайта. Полезные сервисы для упрощения работы18.03.2019 в 22:01Работа с массивами по взросломуМой личный справочник необычных функций для работы с массивами. Как преобразовать массивы к нужному виду в одну строчку.
Оставить комментарий
Заказать сайт
ОТПРАВИТЬ
+7 926 426 93 41anton.ross@yandex.ru
ПОНЕДЕЛЬНИК-СУББОТА
09:00 - 20:00
×
Добро пожаловать

Авторизуйтесь чтобы оставлять комментарии и добавлять фильмы в избранное

Войти
Войдите через:
Создать учетную запись
Восстановление пароля

Укажите email указанный при регистрации, на который будет отправлена инструкция по восстановлению пароля

Сбросить пароль
Добро пожаловать

Зарегистрируйтесь чтобы оставлять комментарии и добавлять фильмы в избранное

Зарегистрироваться

Регистрируясь на сайте Вы соглашаетесь с политикой конфиденциальности нашего сайта и даете согласие на обработку персональных данных

Войдите через:
У меня есть учетная запись
Смена пароля

Используйте код отправленный на указанную вами почту для смены пароля

Сменить пароль