<MyRusakov.ru />

Создание движка на PHP и MySQL 2.0

Создание движка на PHP и MySQL 2.0

Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC.

В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой.

В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Hash API - новый подход к шифрованию паролей.

Hash API - новый подход к шифрованию паролей.

Даже в современное время многие до сих пор используют старые способы шифрования, подвергая опасности свои данные, а функция crypt() для некоторых слишком сложна в использовании. Чтобы это исправить, в PHP 5.5 был введён Hash API, о котором мы и поговорим в этой статье.

Hash API - это просто некий интерфейс, облегчающий использование функции crypt(). Давайте рассмотрим его функции.

password_hash()

Функция password_hash() принимает строку первым параметром и константу вторым.

<?php
  $hash = password_hash("mystring", PASSWORD_DEFAULT);
?>

Если в качестве второго параметра вы укажете PASSWORD_DEFAULT, то на выходе получите хэш из более 60 символов, а если укажете PASSWORD_BCRYPT, то ровно 60 символов.

Hash API сам заботится о соли и стоимости, но если вы хотите указать какие-то свои значения, то сделать это можно так

<?php
  function salt_function() {
   return "mysaltstringfrom22symbols";
 }

  $opt = array('salt' => salt_function(), 'cost' => 11);
  $hash = password_hash("mystring", PASSWORD_DEFAULT, $opt);
?>

Мы создали ассоциативный массив опций, где указали соль, которую возвращает наша функция, и стоимость. В качестве примера я создал простую фунцию, которая возвращает какую-то строку, но, конечно же, у вас код может быть намного сложнее. Главное, чтобы возвращаемая строка была как минимум из 22 символов, иначе будет ошибка. Вторым элементом массива у нас стоимость(cost). По-умолчанию она равна 10, но чем больше данное значение, тем лучше защита, однако не стоит ставить слишком много, т.к. это может существенно понизить скорость работы скрипта. Когда всё готово, данный массив передаётся третим параметров в нашу функцию password_hash().

password_verify()

Если вам нужно проверить исходную строку и хэш, используйте password_verify().

<?php
  if(password_verify("mystring", $hash)) {
   echo "TRUE";
  } else {
   echo "FALSE";
  }
?>

Тут, думаю, объяснять особо нечего. Пойдём дальше.

password_needs_rehash()

Эта функция используется, когда вам нужно обновить параметры соли или стоимости. password_needs_rehash() проверяет, соответствует ли данный хэш заданному алгоритму и опциям. Если нет, то его нужно обновить.

<?php
  if(password_needs_rehash($hash, PASSWORD_DEFAULT, $opt)) {
   $hash = password_hash($pass, PASSWORD_DEFAULT, $opt);
  }
?>

password_get_info()

Эта фунция просто возвращает массив параметров хэширования.

<?php   $arr = password_get_info($hash); ?>

Вернётся ассоциативный массив с такими значениями:

  • algo - константа алгоритма
  • algoName - имя алгоритма
  • options - опции

Итак, на этом всё. Как видите, использовать Hash API очень даже несложно, так что, если у вас версия
PHP 5.5+, то советую использовать именно этот способ шифрования.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (7):

kruty kruty 08.04.2014 15:51:47

Якщо не хочете використовувати бету - користуйтеся таким: https://gist.github.com/marcoarment/1053158

Ответить

Gluhar Gluhar 08.04.2014 17:06:21

Михаил скажите, а что такое соль и стоимость?

Ответить

php_programmer php_programmer 08.04.2014 21:29:08

Сергей, здравствуйте. Давайте представим, что мы хэшируем пароли функцией MD5. Человек при регистрации может ввести какой-нибудь простой и/или короткий пароль и вот хэши таких паролей не составит труда подобрать, ибо существует уже огромная база таких паролей и, соответственно, их хэшей. Чтобы решить данную проблему, была придумана соль. Соль — это набор случайных символов, который каждый раз перед прохождением через хеш-функцию добавляется к паролю. При регистрации пользователя генерируется случайная соль, на основе которой и указанного пароля генерируется «соленый» хеш. И базы, содержащие хэши известных паролей, уже не помогут хакеру, т.к. невозможно учитывать комбинации всех паролей и солей. Стоимость - количество раундов подготовки ключей. Подробнее Вы можете узнать это, если почитаете про криптографию.

Ответить

Gluhar Gluhar 09.04.2014 14:24:34

если я правильно понял то хеш hasgfhst+соль(afasfa) так то есть к хешу добавляется случайно сгенерированная строка?

Ответить

php_programmer php_programmer 09.04.2014 17:57:54

Да. Существует много баз, где можно ввести хэш и узнать пароль, но если вы к паролю, введённому, например, пользователем при регистрации добавите ещё какую-нибудь строку и захэшируете, то такой пароль расшифровать будет намного сложнее

Ответить

mr.poker777face mr.poker777face 16.05.2014 10:04:19

С генерацией понятно, а как быть проверкой? Сейчас я хэширую пароль при регистрации, а при авторизации опять хэширую пароль и сверяю с базой. А с солью как быть, если она генерируется? Хранить в БД?

Ответить

php_programmer php_programmer 17.05.2014 22:07:19

Да, вы можете хранить ее в базе данных, а затем с ней проверять.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.