Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

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

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

Для начала, вам потребуется вот такой запрос: используйте сырую хэш-функцию для сброса паролей пользователей. 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(). Важно всегда стремиться к актуальным технологиям, даже если ваш подход кажется немного устаревшим.

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

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

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

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

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

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

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

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

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

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

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

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

  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 о безопасности баз данных.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой алгоритм рекомендуется для хэширования паролей?
1 / 5