Новое в Symfony 6.4: Улучшения безопасности

Источник: «New in Symfony 6.4: Security Improvements»
В Symfony 6.4 добавлено разрешение бейджей безопасности в профилировщике, более безопасные логи безопасности и возможность раздельного определения нескольких паттернов в брандмауэрах безопасности.

Разрешение бейджей в Profiler

Symfony Profiler предоставляет подробную информацию о безопасности, такую как данные о токене пользователя, слушатели безопасности, связанные с запросом, и лог принятия решения о доступе.

В Symfony 6.4 мы улучшаем эту функцию, чтобы она также показывала, как разрешаются бейджи безопасности. В данном примере пользователь неправильно ввёл свои учётные данные, поэтому бейдж PasswordCredentials не был разрешён корректно:

Symfony Profiler - Ошибка при разрешении бейджей безопасности
Symfony Profiler — Ошибка при разрешении бейджей безопасности

В другом примере аутентификация пользователя прошла успешно:

Symfony Profiler Security - Разрешение значков безопасности при успешной аутентификации
Symfony Profiler Security — Разрешение значков безопасности при успешной аутентификации

Более безопасные логи безопасности

При использовании в приложении ограничения входа в систему (через компонент RateLimiter) Symfony генерирует определённые сообщения журнала. В этих логах содержится такая информация, как IP-адрес и имя пользователя. Эта информация может рассматриваться как PII (Personally Identifiable Information), поэтому мы хэшируем её с помощью криптографической хэш-функции.

Достаточно обновить Symfony до версии 6.4 или выше, и Symfony начнёт хэшировать IP-адрес и имя пользователя, используя kernel.secret вашего приложения.

Массивы паттернов в файерволах

Параметр pattern файервола безопасности определяет регулярное выражение, используемое для принятия решения о соответствии входящего запроса файерволу. Иногда один файервол соответствует нескольким путям, что может затруднить поддержку регулярного выражения. В Symfony 6.4 мы улучшили эту опцию, и теперь можно передавать массив регулярных выражений:

 # config/packages/security.html.twig
security:
firewalls:
no_security:
- pattern: "^/(register|documentation)$"
+ pattern:
+ - "^/register$"
+ - "^/documentation$"

Дополнительные материалы

Предыдущая Статья

Понимание принципов работы сессий в Laravel

Следующая Статья

Предотвращение повторной отправки форм с помощью атомарной блокировки