Безопасное хранение паролей в PHP: функции и методы

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для начала, вам потребуется вот такой запрос: используйте сырую хэш-функцию для сброса паролей пользователей. Bcrypt вполне подойдет для этой цели:

SQL
Скопировать код
-- Не забудьте снять резервную копию, иметь подушку безопасности полезно!
UPDATE users
SET password = crypt('new_password', gen_salt('bf'));

Теперь дадим обстоятельный ответ на вопрос о том, как надёжно обезопасить пользовательские пароли.

Кинга Идем в IT: пошаговый план для смены профессии

Оптимальный тип данных для хранения хэшей паролей

Для хранения хэшированных паролей выбирайте VARCHAR(255) или TEXT. Это обеспечит достаточное пространство для хранения и сохранит гибкость в случае изменений форматов хэшей.

Алгоритмы хэширования, с учетом будущего

Пришло время уйти от MD5. Сфокусируйтесь на bcrypt или Argon2. Благодаря им вычисления займут больше времени, что позволяет повысить защиту от атак методом перебора.

Нормализация паролей: одно и то же, но с разницей

До того, как приступать к хэшированию, обязательно проводите нормализацию паролей согласно RFC 7613. Это гарантирует, что одинаковый пароль всегда будет преобразовываться в одинаковый хэш, независимо от способа ввода и особенностей Unicode.

Обязательно приведите символы к формату NFC и замените нестандартные пробелы на обычные, чтобы создать однородную последовательность.

Пароли и SQL-инъекции

При работе с паролями функции escape_string(), htmlspecialchars() и addslashes() стали прошлым веком. С password_hash() SQL-инъекции будут только казаться страшными, как старая, обидевшаяся тыква после Хэллоуина.

Верификация паролей на уровне профессионала

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

Визуализация

Представьте процесс очистки паролей как секретную миссию:

Markdown
Скопировать код
🔒➡️🚰💧➡️💎

Исходные данные: Конфиденциальная информация (Пароли). (🔒 + 🚰💧)

Python
Скопировать код
# Имена агентов остаются неизвестными. Пальцем по губам, это секрет.
SELECT username, '********' as password FROM users;

Итог задачи: Данные обезопасены, теперь они "чистые". (💎)

Markdown
Скопировать код
Агенты (👥): [Бонд, Борн, Хант]
Кодовые имена заданий (🔏): [🔒, 🔒, 🔒]

Результат: Идентификации агентов поддержаны, однако кодовые имена заданий остаются в секрете.

Работа с паролями с учетом обратной совместимости

Пакет совместимости для PHP версии ниже 5.5

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

Безопасное обращение с паролями

Люди ценят выбор

Содействуйте использованию сложных паролей. Позволяйте пользователю примерять роль хозяина ситуации, не ограничивая длину пароля или использование разнообразных символов.

Правильное хранение и проверка

Не экономьте на пространстве для хранилища хэшированных паролей, им может требоваться дополнительное место.

При проверке хэшированных паролей используйте методы, защищенные от анализа времени выполнения. Безопасность — наше всё.

Пароли — граждане мира

Учитывайте различные особенности клавиатур и гаджетов, которыми пользуются ваши пользователи по всему миру. Особое внимание уделите разным способам ввода для обеспечения взаиморазумения и добрых отношений.

Внедряйте политику безопасности

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

Полезные материалы

  1. Хранение паролей – OWASP Cheat Sheet Series — подробная информация от OWASP о безопасном хранении паролей.
  2. Как лучше всего хранить пароли в базе данных – Stack Overflow — обсуждение SQL-методов для надежного хранения паролей.
  3. Password Hashing Competition — знакомство с Argon2, лидером среди стандартов безопасного хеширования паролей.
  4. bcrypt – Википедия — информация о хэшировании паролей с использованием алгоритма BCrypt.
  5. Почему не следует хэшировать пароли без соли — Почему нельзя просто хэшировать пароли без соли.
  6. PCI Security Standards Council – Защита платежных данных с помощью промышленных стандартов безопасности, образования и программ — Как стать настоящим рыцарем-джедаем в области защиты паролей в платежных системах.
  7. Database Security | Oracle — ключевые детали от Oracle о безопасности баз данных.