Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

PHP 5.5 «API хэширования паролей»

Anna | 31.05.2014 | нет комментариев

Вот и вышел финальный релиз PHP 5.5.0. Коротко о новых вероятностях дозволено прочитать в посте на официальном сайте либо «Переведенное на русский».

На прогре теснее были статьи о некоторых новых вероятностях PHP 5.5.0, такие как «Coroutines в PHP и работа с неблокирующими функциями» и «В PHP 5.5 допустимо появится Finally» 
В данной статье будет затронута одна из новых вероятностей PHP 5.5.0 API хэширования паролей”.Предоставляющий застрахованные от ошибок разработчиков и больше примитивные в применении высокоуровневые функции для генерации и проверки валидности паролей по хэшам. Основное различие нового API в том, что он берёт на себя генерацию надёжных хэшей, скрывая от разработчика операции ручного указания salt-а и выбора алгорифма хэширования (по умолчанию применяется Bcrypt). Создание хэша сведено к выполнению “$hash = password_hash($password, PASSWORD_DEFAULT);”, а проверка к вызову «password_verify($password, $hash)». В качестве поводы внедрения нового API послужило безалаберное отношение многих разработчиков к генерации salt-ов и глобальный выбор нестойких к перебору алгорифмов хэширования.

Будут рассмотрены константы, функции и код, использующий их.

Предопределенные константы
Перечисленные ниже константы неизменно доступны как часть ядра PHP.

PASSWORD_BCRYPT (integer) = 1
PASSWORD_BCRYPT применяется для создания нового хэш пароля с применением алгорифма CRYPT_BLOWFISH.

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

Функции хэширования паролей

array password_get_info ( string $hash ) — Возвращает информацию о данном хэше.

Возвращает ассоциативный массив с тремя элементами(ключами):
— алгорифм(algo), тот, что будет соответствовать константе алгорифма пароля;
— наименование алгорифма(algoName), которое имеет человечески читаемое наименование алгорифма;
— ассоциативный массив с опциями (options), тот, что включает в себя вероятности, предоставляемые при вызове password_hash ().

string password_hash ( string $password, integer $algo [, array $options ] ) — создает новейший хэш пароля.

  • password-пользовательский пароль.
  • algo — константа, обозначающая применяемый алгорифм хэширования пароля. Вы можете применять алгорифм по умолчанию непрерывно, если вы хотите, Дабы алгорифм механически обновлялся в больше результативный, доступный в новых версиях PHP.
  • options — ассоциативный массив с опциями. В данный момент поддерживаются только 2 опции: salt — соль, применяемая при хэшировании пароля, и cost, обозначающая алгоритмическую стоимость вычисления пароля. Примеры данных значений дозволено обнаружить на странице документации функции crypt(). Если он опущен, будет сделана случайная соль и будет применяться алгоритмическая стоимость вычисления по умолчанию.

Возвращает зашифрованный пароль либо FALSE в случае происхождения ошибки.

boolean password_needs_rehash ( string $hash, string $algo [, string $options ] ) — проверяет, соответствует ли предоставленнvmk!/td> 0,018 s 0,267 s 12,152 MiB 5.5.0alpha2 0,018 s 0,267 s 12,148 MiB 5.5.0alpha3 0,015 s 0,271 s 12,148 MiB 5.5.0alpha4 0,019 s 0,268 s 12,164 MiB 5.5.0alpha5 0,014 s 0,270 s 12,195 MiB 5.5.0alpha6 0,016 s 0,304 s 12,219 MiB 5.5.0beta1 0,017 s 0,270 s 12,270 MiB 5.5.0beta2 0,027 s 0,294 s 12,270 MiB 5.5.0beta3 0,022 s 0,265 s 12,656 MiB 5.5.0beta4 0,016 s 0,299 s 12,656 MiB
К сожалению финального 5.5.0 релиза пока ещё в списке нет.

Допустимые грядущие обновления
На данный момент алгорифм шифрования по умолчанию (пока что поддерживается только один) определяет предустановленная константа PASSWORD_DEFAULT. В новых версиях языка алгорифм шифрования по умолчанию дозволено будет задать в настройках.

Для обеспечения больше результативной охраны, в последующих версиях PHP, нужно увеличивать алгоритмическую стоимость вычисления пароля (BCrypt) — это дозволит функции password_hash() оставаться высокоэффективной с течением времени, с усовершенствованием технического оснащения.

Грядущие Опасения
С природой криптографии, грядущая совместимость является предметом серьезного беспокойства. Для того, Дабы быть в безопасности, эти функции обязаны будут приспособиться к меняющимся требованиям в грядущем.

Ссылки:
Документация по API хэширования паролей
Request for Comments: Adding simple password hashing API — Anthony Ferrara
Бета версия нового сайта PHP.net 

P.S от EugeneOZ:
Эти функции дозволено применять теснее теперь и без метаморфозы кода перейти на нативные.
Каждого лишь необходимо применять данный файл:github.com/ircmaxell/password_compat/blob/master/lib/password.php (Нужен PHP> = 5.3.7 )
Тот, что написан тем же человеком, тот, что написал функции в коде PHP — Anthony Ferrara

P.S орфографические ошибки и ошибки перевода пишите в лс

Благодарности:
Спасибо
nixmalenewdyahow за указанные ошибки.
EugeneOZ за дополнение.
yourway за метаморфоза «Допустимые грядущие обновления» в больше внятный вариант.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB