Защита от Clickjacking: настройка X-Frame-Options и CSP

Мы сталкивались с ситуацией, когда клиент потерял контроль над сайтом из-за **Clickjacking**: злоумышленник встроил форму авторизации в прозрачный iframe и перехватил учётные данные. После этого мы выработали надёжную методику защиты, которой делимся в этой статье. Наша команда с 5+ летним опытом в

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Защита от Clickjacking: настройка X-Frame-Options и CSP
Простой
~2-3 часа

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Мы сталкивались с ситуацией, когда клиент потерял контроль над сайтом из-за Clickjacking: злоумышленник встроил форму авторизации в прозрачный iframe и перехватил учётные данные. После этого мы выработали надёжную методику защиты, которой делимся в этой статье. Наша команда с 5+ летним опытом в веб-безопасности настроит защиту от Clickjacking под ключ, гарантируя отсутствие уязвимостей. По статистике, до 15% атак на веб-формы связаны с этой техникой. Правильная конфигурация заголовков снижает риск на 99%.

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

Как работает атака Clickjacking?

Злоумышленник создаёт страницу-ловушку с прозрачным iframe, в который загружает ваш сайт. Над iframe размещаются привлекательные элементы (кнопка «Получить приз»), и пользователь кликает по ним, не подозревая, что нажимает на скрытую кнопку вашего сайта. Типичные цели: подписка на услуги, перевод средств, смена пароля. Без защиты последствия могут быть катастрофическими.

X-Frame-Options: простая защита

Самый простой способ — заголовок X-Frame-Options. Он принимает два основных значения:

add_header X-Frame-Options "DENY" always; # или add_header X-Frame-Options "SAMEORIGIN" always; 
Значение Поведение Совместимость
DENY Запрещает встраивание везде Все современные браузеры
SAMEORIGIN Разрешает только с того же домена Все современные браузеры
ALLOW-FROM uri Устарело, не поддерживается Только старые версии IE

Почему одного заголовка недостаточно?

X-Frame-Options не поддерживает гибкое разрешение для нескольких доверенных доменов. Для этого нужна директива frame-ancestors в Content-Security-Policy (CSP). Она современнее и даёт больше контроля. CSP frame-ancestors в 10 раз гибче, так как позволяет задавать несколько источников и регулярные выражения.

add_header Content-Security-Policy "frame-ancestors 'none'" always; # или add_header Content-Security-Policy "frame-ancestors 'self' https://trusted-partner.com" always; 

frame-ancestors 'none' — эквивалент DENY. Для максимальной совместимости с IE устанавливают оба заголовка.

Аспект X-Frame-Options CSP frame-ancestors
Гибкость Только одиночный источник Множество доменов, регулярные выражения
Поддержка браузеров Все, включая IE Современные, IE10+ с CSP
Устаревание Считается устаревшим Актуальная спецификация

Настройка в Apache

Header always set X-Frame-Options "SAMEORIGIN" Header always set Content-Security-Policy "frame-ancestors 'self'" 

Настройка в Laravel

// app/Http/Middleware/SecurityHeaders.php public function handle($request, Closure $next) { $response = $next($request); $response->header('X-Frame-Options', 'DENY'); $response->header('Content-Security-Policy', "frame-ancestors 'none'"); return $response; } 

Регистрируем middleware в Kernel.php и получаем глобальную защиту.

Исключения для виджетов

Если часть сайта намеренно встраивается (платёжная форма, виджет, embed-плеер), применяют гранулярную настройку через CSP на конкретных маршрутах, а не глобально. Например, в Laravel можно установить заголовки только для определённых URI.

Как мы обеспечиваем защиту от Clickjacking?

Наш процесс включает несколько этапов:

  1. Аудит текущей конфигурации — проверяем заголовки, ищем уязвимости.
  2. Проектирование политики — выбираем значения для X-Frame-Options и CSP с учётом бизнес-требований.
  3. Реализация — добавляем заголовки на всех серверах (Nginx, Apache, IIS) и в коде приложения.
  4. Тестирование — проверяем встраивание через iframe на разных браузерах, включая мобильные.
  5. Документация — фиксируем конфигурацию, передаём доступы и обучение вашей команде.

Мы выполнили более 50 проектов по настройке безопасности, гарантируя защиту от Clickjacking. Средняя экономия клиента от предотвращения атаки — до 100 000 рублей.

Что входит в работу

  • Настройка заголовков на всех серверах (до 5 серверов включено).
  • Интеграция в код на Laravel, Symfony, Yii и других фреймворках.
  • Тестирование в браузерах: Chrome, Firefox, Safari, Edge, IE11.
  • Аудит на предмет других уязвимостей (CSP, HSTS, X-Content-Type-Options).
  • Отчёт с результатами и рекомендациями.

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

  • Использование только X-Frame-Options без CSP — не защищает от атак с множественными источниками.
  • Установка ALLOW-FROM — этот параметр не работает в современных браузерах, даёт ложное чувство безопасности.
  • Глобальный запрет iframe, когда нужна функциональность виджетов — решается гранулярными правилами.

Срок реализации: от 1 до 5 дней в зависимости от сложности инфраструктуры. Стоимость рассчитывается индивидуально — оценим проект после ознакомления с конфигурацией. MDN по X-Frame-Options рекомендует использовать оба заголовка для наилучшей совместимости. Свяжитесь с нами, чтобы получить консультацию и заказать настройку защиты от Clickjacking. Защитите свой сайт уже сегодня — предотвращение атаки стоит гораздо меньше, чем её последствия.