Сіль в паролі

У цій статті я розповім як безпечно зберігати паролі в базі даних

1 спосіб. Зберігаємо пароль як є. Наприклад, якщо ввели пароль "fuckoff", то він так і збережеться. Мінус в тому, що при зломі БД зловмисник отримує всі паролі в явному вигляді.

2 спосіб. Зберігаємо пароль в зашифрованому вигляді, використовуючи алгоритми шифрування md5, sha1 і т.д. Наприклад, md5 ( 'loveyou') = "f74a10e1d6b2f32a47b8bcb53dac5345"

При зломі зловмисник отримає зашифровані паролі і не зможе їх розшифрувати, т.к шифрування незворотне. Але він може методом перебору шифрувати різні комбінації символів і, порівнюючи отриманий хеш з вкраденим хешом пароля, знайти вихідний пароль.

Сіль в паролі

3 спосіб. Зберігаємо пароль в зашифрованому вигляді, але додаючи кілька випадкових символів, унікальних для кожного користувача (так звана сіль). А ще краще зберігати подвійний md5 з сіллю. Зламати такий вищезазначеним способом практично неможливо. У таблиці user нам буде потрібно два поля:
1) поле salt для зберігання солі
2) поле password для зберігання хешу від md5 (md5 (пароль) + сіль).

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

Різні варіанти соління в відомих двигунах:

  • md5 ($ pass. $ salt) - застосовується в Joomla
  • md5 (md5 ($ pass). $ salt) - застосовується в vBulletin
  • md5 (md5 ($ salt) .md5 ($ pass)) - застосовується в нових IP.Board

Схожі статті