Маркетинговое агентство полного цикла

Адрес офиса:
Работаем
по РФ

Звоните Пн-Пт: 9 - 18

+7 (914) 943-66-77 info@lukavchenko.ru

Меню сайта

X-Frame-Options: как защитить сайт от iframe-атак и не навредить SEO

Содержание показать
Техническое SEO без мифов

X-Frame-Options - это HTTP-заголовок ответа сервера, который говорит браузеру, можно ли открывать страницу сайта внутри iframe, frame, embed или object на другом сайте.

Простыми словами: заголовок помогает защитить сайт от кликджекинга - ситуации, когда злоумышленник визуально подсовывает пользователю чужой интерфейс, а действие выполняется на вашем сайте.

Что защищает

Формы, личные кабинеты, страницы оплаты, админки и другие чувствительные интерфейсы.

Где настраивается

На уровне сервера, CDN, панели хостинга, CMS или приложения.

Влияние на SEO

Не прямой фактор роста позиций, а часть технической безопасности и доверия к сайту.

Короткий ответ: какой X-Frame-Options ставить

Для большинства обычных сайтов безопасный базовый вариант - SAMEORIGIN.

X-Frame-Options: SAMEORIGIN

Если страницу вообще нельзя встраивать никуда - например, это вход в личный кабинет, платёжная форма или административный раздел - можно использовать DENY.

X-Frame-Options: DENY

Важно: если сайту нужно разрешить встраивание только на конкретных внешних доменах, одного X-Frame-Options обычно недостаточно. Для такой задачи лучше использовать Content-Security-Policy: frame-ancestors.

Как работает защита от кликджекинга

Кликджекинг - это атака на интерфейс. Пользователь думает, что нажимает кнопку на одном сайте, но фактически кликает по скрытому элементу другого сайта, загруженного во фрейме.

Например, поверх обычной кнопки может быть наложена невидимая область с вашей страницей авторизации, подтверждения действия или отправки формы. Если защита не настроена, браузер может разрешить такое встраивание.

Влияет ли X-Frame-Options на SEO

Сам по себе X-Frame-Options не нужно воспринимать как кнопку “поднять позиции”. Поисковые системы не публикуют правило, что один этот заголовок напрямую двигает страницу в ТОП.

Реальное влияние - косвенное. Защищённый сайт реже получает проблемы с подменой интерфейса, вредоносными сценариями, предупреждениями браузера, жалобами пользователей и потерей доверия.

Фактор Как связан с SEO Честный вывод
HTTPS Официальный лёгкий сигнал качества у Google. Нужно внедрять обязательно.
Вредоносный код Может привести к предупреждениям, ограничениям и потере трафика. Безопасность влияет на видимость через риски.
X-Frame-Options Снижает риск iframe-атак и подмены интерфейса. Это не “SEO-ускоритель”, а техническая гигиена.
CSP Ограничивает источники загрузки ресурсов и встраивание страниц. Полезно внедрять аккуратно, чтобы не сломать сайт.

Вывод: заголовки безопасности не заменяют контент, структуру, коммерческие факторы и аналитику. Но если сайт технически небезопасен, продвижение становится менее устойчивым.

Какие значения X-Frame-Options использовать

Значение Что делает Когда использовать Риск ошибки
DENY Запрещает открывать страницу во фреймах полностью. Админки, платежи, авторизация, личные кабинеты. Может сломать легальное встраивание.
SAMEORIGIN Разрешает фреймы только внутри того же origin. Большинство корпоративных сайтов, блогов и интернет-магазинов. Обычно безопасный базовый вариант.
ALLOW-FROM Должен был разрешать конкретный внешний адрес. На практике лучше не использовать. Плохая поддержка браузерами; заменяется CSP frame-ancestors.

X-Frame-Options или CSP frame-ancestors: что выбрать

X-Frame-Options проще и хорошо подходит как базовая защита. Но он ограничен: у него мало вариантов настройки.

Content-Security-Policy: frame-ancestors гибче. Через него можно указать, какие домены имеют право встраивать страницу.

Когда достаточно X-Frame-Options

  • сайт не должен встраиваться на чужих доменах;
  • нужна быстрая базовая защита;
  • нет сложных внешних интеграций;
  • страницы обычные: услуги, блог, каталог, контакты.

Когда нужен CSP frame-ancestors

  • часть страниц нужно встраивать на доверенных доменах;
  • есть SaaS, виджеты, партнёрские кабинеты;
  • нужна более гибкая политика безопасности;
  • вы внедряете полноценный набор security headers.
Content-Security-Policy: frame-ancestors 'self';

Как выбрать настройку под тип страницы

Тип страницы Рекомендуемый вариант Почему
Главная, услуги, статьи SAMEORIGIN Защищает от чужих iframe и обычно не мешает работе сайта.
Формы заявок SAMEORIGIN или DENY Зависит от того, используются ли формы внутри внутренних фреймов.
Личный кабинет DENY или строгий CSP Здесь выше риск действий от имени пользователя.
Виджет, который должен встраиваться у партнёров CSP frame-ancestors Можно разрешить конкретные доверенные домены.

Как настроить X-Frame-Options

Лучше настраивать заголовки на уровне сервера или CDN. Вариант через WordPress тоже возможен, но он зависит от темы, плагинов, кеширования и порядка отправки заголовков.

Nginx

add_header X-Frame-Options "SAMEORIGIN" always;

Apache / .htaccess

<IfModule mod_headers.c>
  Header always set X-Frame-Options "SAMEORIGIN"
</IfModule>

PHP

header('X-Frame-Options: SAMEORIGIN');

WordPress через functions.php

Правку лучше вносить в дочернюю тему или через небольшой mu-plugin. Если вставить код в основную тему, обновление темы может удалить изменения.

add_action('send_headers', function () {
    header('X-Frame-Options: SAMEORIGIN');
});

Если нужен CSP

Content-Security-Policy: frame-ancestors 'self';

Если сайт работает через CDN, прокси или хостинг-панель, итоговый заголовок нужно проверять снаружи. Иногда сервер отдаёт одно, а пользователь получает другое.

Как проверить, что заголовок работает

1. Через DevTools

Откройте страницу → F12 → Network → выберите документ → Headers → Response Headers.

2. Через curl

curl -I https://site.ru

3. Через онлайн-сервисы

Можно использовать SecurityHeaders или аналоги, но итог всё равно нужно сопоставлять с логикой сайта.

Проверять нужно не только главную страницу. Заголовки могут отличаться на страницах услуг, в блоге, карточках товаров, личном кабинете, PDF и служебных URL.

Частые ошибки при настройке

Ошибка 1. Заголовок есть только на 200 OK

Если не использовать always в Nginx или Apache, заголовок может не передаваться на редиректах, 404 и других ответах.

Ошибка 2. Ставят DENY без проверки интеграций

Иногда сайт легально использует iframe: формы, виджеты, панели, встраиваемые модули. В этом случае жёсткий запрет может сломать функциональность.

Ошибка 3. Конфликтуют X-Frame-Options и CSP

Если одна политика разрешает встраивание, а другая запрещает, поведение может отличаться по браузерам. Настройки должны быть согласованы.

Ошибка 4. Заголовок прописали в WordPress, но CDN его перезаписал

Кеширующие плагины, CDN и прокси могут менять финальные заголовки. Проверять нужно ответ, который реально получает пользователь.

Что должно быть в норме

  • На важных страницах есть X-Frame-Options: SAMEORIGIN или обоснованно выбранный CSP.
  • Для личных кабинетов, оплаты и авторизации используется более строгая политика.
  • Нет устаревшей зависимости от ALLOW-FROM.
  • Заголовки проверены на главной, коммерческих страницах, статьях и служебных разделах.
  • CSP не ломает изображения, стили, скрипты, формы и внешние сервисы аналитики.
  • После внедрения проверены заявки, формы, корзина, оплата и вход в админку.

Что спросить у подрядчика перед внедрением

  • На каком уровне вы будете добавлять заголовки: сервер, CDN, CMS или приложение?
  • Проверите ли вы все типы страниц, а не только главную?
  • Какие страницы нельзя встраивать вообще?
  • Есть ли у сайта легальные iframe-интеграции?
  • Будет ли тест после внедрения: формы, корзина, оплата, аналитика, виджеты?
  • Согласованы ли X-Frame-Options и Content-Security-Policy?

Красные флаги

Подрядчик обещает рост позиций только от добавления security headers.
Настройку делают без проверки форм, корзины и личного кабинета.
Везде ставят DENY, не выяснив, нужны ли фреймы.
Используют ALLOW-FROM как современное решение.
Не проверяют итоговые заголовки после CDN и кеширования.

Пример плохой и хорошей настройки

Плохой вариант

“Поставили DENY на весь сайт, ничего не проверяли, формы и виджеты потом разберём”.

Риск: можно сломать часть функциональности и не заметить потерю заявок.

Хороший вариант

“Сначала нашли страницы, где iframe не нужен, поставили SAMEORIGIN, отдельно проверили кабинет, формы, оплату, CDN и CSP”.

Итог: защита внедрена осознанно, без поломки бизнес-процессов.

Какие ещё security headers стоит проверить

X-Frame-Options - только один слой защиты. В нормальном техническом аудите обычно смотрят весь набор заголовков и то, как они взаимодействуют между собой.

Заголовок Зачем нужен
Content-Security-Policy Ограничивает источники скриптов, стилей, изображений и встраивания страниц.
X-Content-Type-Options Помогает запретить браузеру угадывать MIME-тип ресурса.
Strict-Transport-Security Заставляет браузер обращаться к сайту по HTTPS после первого безопасного посещения.
Referrer-Policy Управляет тем, какие данные о странице-источнике передаются при переходе.
Permissions-Policy Ограничивает доступ к функциям браузера: камере, микрофону, геолокации и другим API.

Если сайт размещён на хостинге, где нет доступа к настройке заголовков, стоит уточнить поддержку у провайдера. Например, можно посмотреть условия у Beget или у вашего текущего хостинга.

Честный блок: проблема может быть не только в заголовках

Если сайт плохо продвигается или не даёт заявки, security headers редко бывают единственной причиной. Они важны, но сами по себе не исправят слабую структуру, плохой оффер, медленную загрузку, пустые коммерческие страницы или отсутствие аналитики.

В реальном SEO-аудите нужно смотреть связку: техническое состояние, индексацию, структуру страниц, контент, коммерческие факторы, доверие, скорость обработки заявок, сезонность, цены и работу отдела продаж.

По смежным темам можно дополнительно посмотреть:
SEO-продвижение сайта,
SEO для PDF и X-Robots-Tag,
настройку crawl-delay в robots.txt,
hreflang и HTTP-заголовки.

Справочные источники

Для проверки технических деталей полезно смотреть первичные справочники:
MDN по X-Frame-Options,
MDN по CSP frame-ancestors,
web.dev по security headers.

Не уверены, что технические настройки не мешают SEO?

Начните не с случайных правок, а с проверки: какие заголовки отдаёт сайт, нет ли проблем с HTTPS, индексацией, дублями, скоростью, формами и коммерческими страницами.

Заказать SEO-разбор сайта

Генеративный ИИ поиск

Спросить ИИ об этой статье

Откройте статью в ИИ-сервисе и получите краткое саммари: главную идею, выводы, практические рекомендации и вопросы по теме.

Выберите ИИ-сервис или скопируйте промпт вручную.

КВИЗ

Тест-калькулятор на расчет стоимости SEO

FAQ: Вопрос Ответ

Как проверить, что X-Frame-Options установлен правильно?
После установки перейдите по указанному URL и проверьте заголовки ответа через DevTools или curl.
Убедитесь, что заголовок отправлен по HTTPS-протоколу и применён на уровне сервера, а не только плагина.
Часто человек добавляет его в тему - но программа CDN или провайдер перезаписывает записи.
Поэтому сначала делаем резервную копию, затем проверяем поддомены и основной путь.
Нужно ли настраивать заголовки через плагины или сервер?
Лучше через сервер.
Плагины - временная практика: они не контролируют cache, поддомены и статический контент.
На уровне nginx/apache настройки стабильнее и поддерживают разные типы файлов. Плагин подходит только для предварительной проверки или если хостинг не даёт доступ.
Почему после добавления policy ломаются формы и вход?
Обычно проблема в Content-Security-Policy: правило form-action блокирует отправку данных.

В некоторых типах сайтов (личный кабинет, регистрация клиентов, комментарии) нужно добавить разрешённые URI. Иначе браузер не отправляет содержимое формы.
Решение - указывать источники, а не ставить пустой none.
Как понять, что защита реально работает?
Смотрите отчёты браузера и аналитики: исчезают попытка внедрения, блокируется реклама iframe, уменьшаются нарушения policy.
В отчётах разработчикам видно какой ресурс был отправлен и отклонён. Если показатели отказов снизились - значит решение помогло повысить доверие пользователей.

Бесплатно!

Рассчитайте стоимость продвижения прямо сейчас