Налаштування Content Security Policy для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Показано 1 з 1 послугУсі 1626 послуг
Налаштування Content Security Policy для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування Content Security Policy для 1С-Бітрікс

CSP — заголовок, який вказує браузеру, з яких джерел дозволено завантаження ресурсів. Для Бітрікс-сайтів налаштування нетривіальне: ядро, компоненти та сторонні віджети (метрики, чати, платіжні форми) використовують десятки різних доменів, і неправильний CSP або не працює, або ламає функціонал.

Як впровадити CSP у Бітрікс

Заголовок додається на рівні веб-сервера або в коді. Переважно — в nginx:

add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://www.google-analytics.com; img-src 'self' data: https:; style-src 'self' 'unsafe-inline';" always;

Альтернатива — в init.php через \Bitrix\Main\Context::getCurrent()->getResponse()->addHeader(), але тоді заголовок не застосовується до статики.

Аналіз необхідних джерел

Перед написанням політики — режим Content-Security-Policy-Report-Only:

add_header Content-Security-Policy-Report-Only "default-src 'self'; report-uri /csp-report-endpoint" always;

Браузер буде логувати порушення, не блокуючи їх. Аналізуйте консоль devtools кілька днів, збираючи всі домени, які використовують компоненти.

Типові джерела для Бітрікс-сайту:

  • 'unsafe-inline' для script-src — майже неминуче через вбудовані скрипти Бітрікс
  • https://mc.yandex.ru — Яндекс.Метрика
  • https://www.google-analytics.com, https://www.googletagmanager.com — GTM/GA
  • https://pay.alfabank.ru, https://securepay.tinkoff.ru — платіжні системи (для frame-src)
  • https://widget.jivosite.com — Jivo та аналоги (для frame-src, connect-src)

Обмеження через inline-код

Бітрікс активно використовує onclick та <script> без nonce — це конфліктує з script-src 'self' без 'unsafe-inline'. Повне видалення 'unsafe-inline' вимагає рефакторингу шаблонів і компонентів для додавання nonce.

Компроміс: застосовуйте суворий CSP хоча б до frame-src, object-src, base-uri — вони дають найбільший захисний ефект при мінімальних конфліктах:

Content-Security-Policy: frame-ancestors 'self'; object-src 'none'; base-uri 'self';

Випадок із практики

B2C-магазин із вбудованим онлайн-чатом і платіжною формою в iframe. Після увімкнення CSP перестала відкриватися форма оплати через Тінькофф — iframe блокувався директивою frame-src 'self'. Платіжний домен securepay.tinkoff.ru не був доданий до політики. Додатково: Яндекс.Метрика переставала записувати вебвізор (блокувався WebSocket до mc.yandex.ru). Рішення: додавання всіх доменів до відповідних директив через режим Report-Only, потім застосування суворої політики.

Терміни виконання

Розробка та впровадження CSP з попереднім аудитом у режимі Report-Only — від 4 до 8 годин залежно від кількості сторонніх сервісів на сайті.