Как настроить Content Security Policy (CSP)
В этой статье описывается, как настроить Content Security Policy (CSP) для GitLab с целью устранения распространённых проблем безопасности, выявленных при проведении penetration testing.
Применимые сценарии:
- В отчётах penetration testing выявлены проблемы, связанные с CSP (например, отсутствующие директивы, чрезмерно разрешающие источники)
- Укрепление безопасности инстанса GitLab
Содержание
Общие сведенияПредварительные требованияНастройка CSPОписание директивДополнительно: удаление unsafe-eval и unsafe-inlineПроверкаОбщие сведения
Content Security Policy (CSP) — это HTTP-заголовок ответа, который помогает предотвратить атаки типа cross-site scripting (XSS), clickjacking и другие виды внедрения кода, контролируя, какие ресурсы браузер может загружать.
По умолчанию GitLab включает конфигурацию CSP, однако некоторые директивы могут быть чрезмерно разрешающими (например, разрешение источников с подстановочными знаками http: и https:), что может быть отмечено в ходе penetration testing.
Предварительные требования
- Инстанс GitLab развернут согласно документации GitLab Instance Deployment.
- Результаты penetration testing доступны для ознакомления (например, из OWASP ZAP).
Настройка CSP
Измените конфигурацию CR инстанса GitLab, чтобы включить и настроить директивы CSP.
Замените
http://gitlab.example.comна фактический внешний URL вашего инстанса GitLab.
Описание директив
Дополнительно: удаление unsafe-eval и unsafe-inline
Для более строгих требований безопасности можно дополнительно удалить unsafe-eval из script-src и unsafe-inline из style-src:
Внимание: Удаление
unsafe-evalиunsafe-inlineможет привести к следующим известным проблемам:
- Выпадающие меню навигации могут отображаться некорректно (располагаться в верхней части страницы).
- Редактирование скриптов сниппетов может работать неправильно.
Оцените эти компромиссы с учётом требований безопасности перед применением данной конфигурации. Для тестирования политики без её принудительного применения можно использовать
report_only: true.
Проверка
После применения конфигурации дождитесь завершения повторного развертывания инстанса GitLab, затем выполните проверку:
- Откройте веб-интерфейс GitLab в браузере.
- Откройте инструменты разработчика браузера (F12) и перейдите на вкладку Network.
- Просмотрите заголовки ответа любого запроса страницы и убедитесь, что заголовок
Content-Security-Policyотражает настроенные директивы. - Проверьте вкладку Console на наличие ошибок нарушения CSP, которые могут указывать на нарушение функциональности.