Yandex Metrika
sanches.free 27 просмотров

Битрикс, защита от фреймов и Яндекс Метрика: как не ломать Вебвизор

Зачем запрещают страницу во фрейме

В «Проактивной защите» включение против встраивания заставляет ядро отдавать браузеру сигнал вроде X-Frame-Options: страница не должна показываться внутри чужого iframe. Так снимают классический clickjacking: злоумышленник не подсовывает прозрачный фрейм с вашей админкой поверх своей страницы и не провоцирует клики «от имени» администратора.

Почему это мешает Метрике

У счётчика есть инструменты, где страница реально подгружается в iframe (Вебвизор, карта кликов и тому подобное). Если для всех запросов действует общий запрет на фрейм, в интерфейсе Метрики появится подсказка про «запрет на отображение во фрейме», хотя сам код счётчика установлен правильно.

Точечное ослабление через константу

Достаточно рано в загрузке (типично /local/php_interface/init.php или общий аналог в /bitrix/php_interface/) можно определить BX_SECURITY_SKIP_FRAMECHECK как истину — ядро тогда не навесит ограничение для текущего запроса. Делать это «для всех» не стоит: пропадает смысл anti-frame.

Разумнее смотреть на HTTP_REFERER и открывать исключение только если хост пришёл из зоны Метрики/Вебвизора либо совпадает с вашим HTTP_HOST — последнее нужно, когда в интерфейсе запускают «Взаимодействие с сайтом» и браузер уходит со страницы аналитики обратно на ваш домен.

if (isset($_SERVER['HTTP_REFERER'])) {
    $trustedFrameHosts = [
        'webvisor.com',
        'metrika.yandex',
        'metrika.yandex.ru',
        'metrika.yandex.ua',
        'metrika.yandex.com',
        'metrika.yandex.by',
        'metrika.yandex.kz',
        $_SERVER['HTTP_HOST'],
    ];

    $referrerHost = parse_url((string) $_SERVER['HTTP_REFERER'], PHP_URL_HOST);

    if ($referrerHost !== null && in_array($referrerHost, $trustedFrameHosts, true)) {
        define('BX_SECURITY_SKIP_FRAMECHECK', true);
    }
}

После выкладки проверьте Вебвизор и воспроизведение записей на живом счётчике.

Компромиссы

Заголовок реферера контролирует клиент; для строгости можно дополнительно смотреть на политики CSP (frame-ancestors) и выдавать узкий список доверенных источников встраивания. Для типичной связки Битрикс + Метрика белый список доменов аналитики — практичный баланс.

Итог

Оставляйте анти‑фрейм включённым, а для сеансов, пришедших из Метрики или с переходами внутри вашего сайта из отчёта, временно опускайте проверку — защита от произвольного встраивания сохранится, отчёты перестанут падать на запрете iframe.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии