Перейти к основному содержимому

Концепция безопасности

Команда 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 должны быть «последним рубежом» обороны в вашей многоуровневой системе безопасности.


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.