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

От чего защищает X-Frame-Options?
От атак типа «кликджекинг» (англ. Clickjacking).На русский переводится дословно, как "воровство кликов". Суть заключается в том, что ваш сайт запускают во фрейме на стороннем ресурсе, затем поверх кнопок и других элементов накладывают ссылки на запуск вредоносных программ, либо иных мошеннических действий.
Представьте, что у злоумышленника есть канал на YouTube и ему хочется больше подписчиков.
Он может создать страницу с кнопкой «Не нажимать», что будет значить, что все на неё обязательно нажмут. Но поверх кнопки находится абсолютно прозрачный iframe и в этом фрейме прячется страница канала с кнопкой подписки. Поэтому при нажатии на кнопку, на самом деле пользователь подписывается на канал, если конечно, он был залогинен в YouTube. [Экзотичные заголовки HTTP/Хабр]
Установка значения этого параметра «SAMEORIGIN» разрешает рендеринг документа, при открытии во фрейме - только с того же домена.
В этом случае значительно повышается безопасность сайта и подобная установка крайне рекомендована.
Но при этом перестанет работать webvisor, который использует данную «уязвимость».
Множество ответов на вопрос «что же теперь делать?» предлагают выбрать то, что нас больше привлекает: Безопасность сайта или просмотр активности через webvisor?
Возникает резонный вопрос: «А больше там никого нет?»
Оказывается есть. Существует способ настроить сервер таким образом, чтоб он вебвизору разрешал «лазить по сайту», а всех остальных отправлял по известному адресу (127.0.0.1)
Для типовых решений 1-С Битрикс (например, развернутый сервер на FirstVDS c CentOS + nginx) выполняем следующие действия:
1. в файле
/etc/nginx/bx/maps/common_variables.conf
нужно добавить кодmap $http_referer $frame_options {
"~webvisor.com" "ALLOW-FROM http://webvisor.com";
default "SAMEORIGIN";
}
2. В файле настроек конкретного сайта
/etc/nginx/bx/site_avaliable/s1.conf
добавить add_header X-Frame-Options $frame_options;
В нашем случае, так как конфигурация сервера раскидана по разным файлам, требуемый файл
/etc/nginx/bx/conf/http-add_header.conf
В нем уже содержится код add_header X-Frame-Options SAMEORIGIN;
Тот самый, который не пускает наш Webvisor. Заменяем значение на переменную $frame_options, чтобы получилось
add_header X-Frame-Options $frame_options;
После этого нужно перезапустить nginx.
Для этого в терминале выполняем
systemctl restart nginx
Проверяем настройки безопасности на MainSpy или аналогичном сервисе.
Вводим адрес нашего сайта в строку "Введите URL страницы сайта", нажимаем кнопку "ПРОВЕРИТЬ"
Если в ответе присутствует «X-Frame-Options: SAMEORIGIN» - значит защита от Кликджекинга работает.
Не забываем отключать Ad-block для страницы webvisor.com