Концепция безопасности
Команда Pimcore уделяет приоритетное внимание безопасности и рекомендует использовать многоуровневую концепцию для защиты решений на базе данной платформы.
Поскольку Pimcore является фреймворком, а не готовым «коробочным» продуктом, эта концепция включает части, обеспечиваемые самим ядром системы, и части, которые должен реализовать партнер-интегратор (разработчик).
Уровень ядра Pimcore (Core Level)
Соблюдение стандартов кодирования и лучших практик
Для минимизации рисков мы следуем проверенным стандартам PHP и отраслевым практикам. Стандарты основаны на рекомендациях PSR (PHP Standards Recommendations), разработанных группой PHP-FIG. Соблюдение стандартов проверяется автоматически при каждой сборке (CI) на GitHub.
Pimcore также является голосующим членом PHP-FIG.
Управление зависимостями
Pimcore базируется на фреймворке Symfony и множестве дополнительных компонентов. Все они управляются через Composer. Это позволяет легко и удобно поддерживать все зависимости проекта в актуальном и безопасном состоянии.
Поскольку Pimcore является приложением Symfony, он может использовать все инструменты Symfony, такие как Symfony Security Checker.
Политика безопасности контента (Content Security Policy)
Pimcore предоставляет обработчик политики безопасности контента, который добавляет дополнительный слой защиты от XSS-атак и инъекций данных. Сервер добавляет HTTP-заголовок Content-Security-Policy со специальным токеном nonce в каждый запрос в интерфейсе администратора. Код скриптов выполняется только в том случае, если их токен совпадает с серверным.
Политика безопасности контента включена по умолчанию. Узнайте больше о CSP.
Чтобы разрешить внешние URL-адреса для определенных директив, добавьте пользовательскую конфигурацию в config/config.yaml и предоставьте список в конфигурации:
# config/config.yaml
pimcore_admin:
admin_csp_header:
additional_urls:
script-src:
- 'https://oreo.cat/scripts/meow.js'
- 'https://bagheera.cat/*'
style-src:
- 'https://oreo.cat/scripts/meow.css'
Чтобы полностью отключить CSP, установите свойство enabled в значение false:
# config/config.yaml
pimcore_admin:
admin_csp_header:
enabled: false
Если вы используете сторонние бандлы или расширяете админ-панель своими представлениями, вам нужно добавлять nonce в свои скрипты. Если скрипт не содержит допустимого значения nonce, то его выполнение прекращается с предупреждением в консоли, например
Refused to execute inline script because it violates the following Content Security Policy directive: ...
Это можно решить через расширение Pimcore HeadScript или добавьте nonce скрипт к встроенным скриптам следующим образом:
<script {{ pimcore_csp.getNonceHtmlAttribute()|raw }}>
Решение проблем безопасности
В случае возникновения проблем с безопасностью/уязвимостей в ядре Pimcore, мы решаем их с помощью следующей процедуры:
* Сообщение о проблеме : Сообщите о проблеме через [механизм консультаций по безопасности Github](https://pimcorehq.wufoo.com/forms/pimcore-security-report/ в соответствующем репозитории, например, здесь для ядра фреймворка. Не через общедоступный сервис отслеживания проблем (в соответствии с рекомендациями, также доступными в общедоступном трекере проблем)! * Решение проблемы :
- Сообщение о проблеме направляется непосредственно в основную команду Pimcore, проверяется и, в случае подтверждения, устраняется следующими шагами
- Отправляется подтверждение репортеру с официальным заявлением
- Работа над патчем
- Если решение еще не доступно, для него получается идентификатор CVE
- Опубликовывается патч и/или новый выпуск Pimcore
- Опубликовывается объявление о безопасности, по крайней мере, затронутые версии, возможные эксплойты и как исправить/обновить
Уровень проекта (обеспечивается партнером-интегратором)
Соблюдение стандартов
Мы настоятельно рекомендуем разработчикам прикладных решений следовать тем же стандартам кодирования и лучшим практикам, что и при разработке ядра.
Управление зависимостями
Разработчик должен самостоятельно проверять на безопасность все дополнительные библиотеки, добавленные в конкретный проект, используя такие инструменты, как Symfony Security Checker.
Тестирование на проникновение в рамках конкретного проекта
Тестирование на проникновение в рамках конкретного проекта должно выявить возможные проблемы безопасности при внедрении решения. Это тестирование должно проводиться на промежуточных системах без дополнительных уровней безопасности, таких как WAF (брандмауэр веб-приложений) или IPS (Системы защиты от вторжений), и должно охватывать все 10 основных рисков OWASP.
Наилучшие результаты ожидаются, когда это тестирование проводится сторонним партнером.
WAF и IPS в рабочей среде
Межсетевые экраны веб-приложений (WAF) и системы предотвращения вторжений (IPS) анализируют трафик и фильтруют вредоносную активность.
Pimcore поддерживает стандартные продукты, такие как ModSecurity, решения от CloudFlare и другие. Для работы административной панели Pimcore могут потребоваться дополнительные исключения в правилах WAF.
WAF и IPS должны быть «последним рубежом» обороны в вашей многоуровневой системе безопасности.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.