Заголовок X-Frame-Options: запрет на отображение страницы во фрейме
От чего защищает X-Frame-Options?
От атак типа «кликджекинг» (англ. Clickjacking).
На русский переводится дословно, как "воровство кликов". Суть заключается в том, что ваш сайт запускают во фрейме на стороннем ресурсе, затем поверх кнопок и других элементов накладывают ссылки на запуск вредоносных программ, либо иных мошеннических действий.
Представьте, что у злоумышленника есть канал на YouTube и ему хочется больше подписчиков.
Он может создать страницу с кнопкой «Не нажимать», что будет значить, что все на неё обязательно нажмут. Но поверх кнопки находится абсолютно прозрачный iframe и в этом фрейме прячется страница канала с кнопкой подписки. Поэтому при нажатии на кнопку, на самом деле пользователь подписывается на канал, если конечно, он был залогинен в YouTube.
Установка значения этого параметра «SAMEORIGIN» разрешает рендеринг документа, при открытии во фрейме - только с того же домена.
В этом случае значительно повышается безопасность сайта и подобная установка крайне рекомендована.
Но при этом перестанет работать webvisor, который использует данную «уязвимость».
Множество ответов на вопрос «что же теперь делать?» предлагают выбрать то, что нас больше привлекает: Безопасность сайта или просмотр активности через webvisor?
Возникает резонный вопрос: «А больше там никого нет?»
Оказывается есть. Существует способ настроить сервер таким образом, чтоб он вебвизору разрешал «лазить по сайту», а всех остальных отправлял по известному адресу (127.0.0.1)
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