1. Главная
  2. Блог
  3. Если не работает webvisor Яндекс.Метрики

Почему не работает Webvisor от Яндекс

18 апреля 2019
1753

Заголовок X-Frame-Options: запрет на отображение страницы во фрейме

web_visor.jpg

От чего защищает X-Frame-Options?

От атак типа «кликджекинг» (англ. Clickjacking).
На русский переводится дословно, как "воровство кликов". Суть заключается в том, что ваш сайт запускают во фрейме на стороннем ресурсе, затем поверх кнопок и других элементов накладывают ссылки на запуск вредоносных программ, либо иных мошеннических действий.

Представьте, что у злоумышленника есть канал на YouTube и ему хочется больше подписчиков.
Он может создать страницу с кнопкой «Не нажимать», что будет значить, что все на неё обязательно нажмут. Но поверх кнопки находится абсолютно прозрачный iframe и в этом фрейме прячется страница канала с кнопкой подписки. Поэтому при нажатии на кнопку, на самом деле пользователь подписывается на канал, если конечно, он был залогинен в YouTube. [Экзотичные заголовки HTTP/Хабр]

Установка значения этого параметра «SAMEORIGIN» разрешает рендеринг документа, при открытии во фрейме - только с того же домена.
В этом случае значительно повышается безопасность сайта и подобная установка крайне рекомендована.
Но при этом перестанет работать webvisor, который использует данную «уязвимость».
Множество ответов на вопрос «что же теперь делать?» предлагают выбрать то, что нас больше привлекает: Безопасность сайта или просмотр активности через webvisor?

Возникает резонный вопрос: «А больше там никого нет?»
Оказывается есть. Существует способ настроить сервер таким образом, чтоб он вебвизору разрешал «лазить по сайту», а всех остальных отправлял по известному адресу (127.0.0.1)

Для типовых решений 1-С Битрикс (например, развернутый сервер на FirstVDS c CentOS + nginx) выполняем следующие действия:
1. в файлы

/etc/nginx/bx/site_avaliable/s1.conf
/etc/nginx/bx/site_avaliable/ssl.s1.conf

в блок location / { ... } добавляем код
set $frame_options '';
    if ($http_referer !~ '^https?:\/\/([^\/]+\.)?(your_domain\.ru|webvisor\.com)\/'){
        set $frame_options 'SAMEORIGIN';
    }
add_header X-Frame-Options $frame_options;

Если нет location, то добавляем в server {... } в конец.
your_domain\.ru заменить именем своего домена, косую черту перед точкой оставить.
заходим по ssh на сервер: ssh root@your_domain.ru
тестируем конфигурацию nginx
nginx -t
Если ответ вот такой
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

значит в синтаксисе нет ошибок.
перезапускаем командой:
nginx -s reload
идем в метрику проверяем работу
идем в сервис проверки ответов сервера, например https://checkmy.ru/
проверяем наличие в ответе
X-Frame-Options: SAMEORIGIN
Если такой ответ присутствует, то мы сделали всё правильно.
Не забываем отключать Ad-block для страницы webvisor.com
8 800 201-07-68
Консультации по решению