Хешування паролів за допомогою hash api

На даний момент використання bcrypt - це найкращий спосіб хешування паролів, проте безліч розробників по-старому використовують MD5 і SHA1. Багато з них, не застосовують техніку додавання солі. У PHP 5.5 вирішили акцентувати увагу розробників на алгоритмі bcrypt і створили спеціальний хеш API.

Хеш API складається з наступних функцій:

  • password_hash () - для генерації хеша пароля.
  • password_verify () - перевірка пароля.
  • password_needs_rehash () - використовується коли потрібно перегенеріровать хеш.
  • password_get_info () - повертає назву алгоритму і іншу інформацію.

password_hash ()

Використання функції crypt () у багатьох викликає ступор через складність, тому замість неї застосовуються спрощені способи створення хеша. Наприклад:

Функція password_hash () спрощує цей процес настільки, наскільки це можливо. Якщо вам потрібно створити хеш пароля, викличте цю функцію і запишіть значення в базу даних.

От і все! Перший параметр - це рядок представляє собою пароль; другий - алгоритм, який буде застосований.

Алгоритм, який використовується за умовчанням - bcrypt, але в майбутньому будуть додані і інші, більш просунуті алгоритми. Якщо ви використовуєте PASSWORD_DEFAULT, то знайте, що на виході отримаєте рядок з понад 60 символів. Вона може бути і більше, особливо, при використанні інших алгоритмів, так що в таблиці розмір поля можете виставити 255. В якості другого параметра, ви можете використовувати константу PASSWORD_BCRYPT. В цьому випадку, розмір рядка на виході буде рівно 60 символів.

Важливо зрозуміти, що вам самим не потрібно передавати сіль або параметр cost (вартість - кількість раундів підготовки ключів). Новий API зробить це за вас. Але якщо ж ви хочете самі задати дані параметри, то можете зробити це в такий спосіб.

password_verify ()

Тепер, коли ви знаєте як генерувати хеш, давайте подивимося на те, як здійснювати перевірку.

Функція password_verify () приймає пароль в звичайному вигляді і його хеш. Залежно від результатів перевірки, повертає true або false.

Зауважте, що сіль знаходиться в самому хеше, так що нам не потрібно вказувати її вручну.

password_needs_rehash ()

Що якщо вам потрібно оновити установки солі або вартості? Або змінилися налаштування хешування PHP? В цьому випадку, можете скористатися функцією password_needs_rehash () для перевірки даного факту.

Дану операцію можна робити при вході користувача в систему, адже тільки тоді у нас є доступ до паролю в явному вигляді.

password_get_info ()

password_get_info () повертає параметри хешування:

  • algo - константа з назвою алгоритму
  • algoName - назва алгоритму
  • options - різні настройки

висновок

5 останніх уроків рубрики "PHP"

Коли мова йде про безпеку веб-сайту, то фраза "фільтруйте все, екрануйте все" завжди буде актуальна. Сьогодні поговоримо про фільтрації даних.

  • Expressive 2 підтримує можливість підключення інших ZF компонент за спеціальною схемою. Не всім подобається це рішення. У цій статті ми розповімо як поліпшили процес підключення декількох модулів.

  • Припустимо, що вам необхідно відправити якусь інформацію в Google Analytics з серверного скрипта. Як це зробити. Відповідь в цій замітці.

  • Підбірка з декількох видів PHP пісочниць. На деяких ви в режимі online зможете потестить свій код, але є так само рішення, які можна впровадити на свій сайт.

    Хешування паролів за допомогою hash api

    За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!

    Хешування паролів за допомогою hash api

    Хешування паролів за допомогою hash api

    Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

    Хешування паролів за допомогою hash api

    Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

    Хешування паролів за допомогою hash api

    Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!