Прогрессивные методы хеширования паролей. 

27.07.201877
Вопросы безопасности! Проблема безопасного хранения и доступа к данным пользователей всегда являлась одной из основных, ведь утечка очень сильно бьет по авторитету ресурса. Нет стопроцентного рецепта защиты от взлома, но есть возможность максимально усложнить хакеру жизнь.

Хеширование паролей с помощью API PHP 5.5 

Очень большое количество разработчиков до сих пор используют в своих проектах ужасно слабые и устаревшие алгоритмы, вроде md5(), sha1(), порой даже не прибегая к "соли", или реверсии (сомнительное укрепление). Я предпочитаю BCrypt, как наилучший способ, но многие считают данный алгоритм слишком сложным. С выходом PHP 5.5 работа с данным алгоритмом значительно упрощается. 
В состав API хеширования входит четыре функции: 
password_hash(string $password, int $algo [, array $options(salt, cost) ]): выполняет хеширование, принимает 3 аргумента - пароль, используемый алгоритм хеширования, ассоциативный массив с опциями: salt - соль, используемая для хеширования, cost - алгоритмическая стоимость вычисления пароля. Если последний аргумент отсутствует, будет создана случайная соль и использована алгоритмическая стоимость вычисления по умолчанию. Возвращает зашифрованный пароль или FALSE в случае возникновения ошибки;
password_verify(string $password, string $hash): проверяет, соответствие пароля с заданным хэшем. Этот хэш может быть создан с помощью password_hash() или обычный crypt() хэш. Возвращает TRUE, если пароль и хэш соответствуют или в противном случае FALSE;
password_needs_rehash(string $hash, string $algo [, string $options ]): проверяет, соответствует ли предоставленный хэш заданному алгоритму и опциям. Если нет, то считается, что хэш должен быть изменён. Принимает три аргумента - проверяемый хэш, используемый алгоритм хеширования пароля, ассоциативный массив с опциями аналогичными опциям из функции password_hash(). Возвращает TRUE, если хэш должен быть изменён, чтобы соответствовать данному алгоритму и опциям, или в противном случае FALSE;
password_get_info(string $hash): Возвращает информацию о данном хэше. Возвращает ассоциативный массив с тремя элементами(ключами): алгоритм(algo), который будет соответствовать константе алгоритма пароля, название алгоритма(algoName), которое имеет человечески читаемое название алгоритма, ассоциативный массив с опциями (options), который включает в себя возможности, предоставляемые при вызове password_hash().
При создании хэша возможно использование следующих констант: 
PASSWORD_BCRYPT = 1: используется для создания нового хэш пароля с использованием алгоритма CRYPT_BLOWFISH;
PASSWORD_DEFAULT = PASSWORD_BCRYPT: используется алгоритм хеширования по умолчанию, если алгоритм не задан. Он может измениться в новых версиях PHP, когда будут поддерживаться новые, более эффективные (например, Scrypt) алгоритмы хеширования.
Чем выше значение параметра cost, тем выше эффективность защиты, поэтому следует увеличивать его, в зависимости от технической оснащенности используемого оборудования. Так же одним из главных преимуществ является полная автономия параметра salt (теперь он хранится в хэше), который можно генерировать автоматически и не хранить в отдельном поле. 
$options = [
          'salt' => custom_function_for_salt(),	# собственный код для генерации соли 
          'cost' => 12	# по умолчанию используется 10 
];
$hash = password_hash($password, PASSWORD_DEFAULT, $options);
Оставить комментарий
Оставить комментарий
Оставайтесь на связи
Популярные статьи
Статьи по теме
Подписаться на рассылку
ПОДПИСАТЬСЯ
Поддержать проект

Если нравится наш блог, вы постоянно подчерпываете полезную информацию и делаете интересные открытия - поддержите наших авторов

Перевести
Оставить заявку
ОТПРАВИТЬ
+7 926 426 93 41anton.ross@yandex.ru
×
Добро пожаловать

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

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

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

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

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

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

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

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

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

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