Как защититься от Clickjacking: настройка X-Frame-Options и расширения для браузера

Вы заходите на сайт — кликаете на кнопку, а вместо ожидаемого действия открывается чужой сайт, где вас просят ввести логин или подтвердить перевод. Вы даже не поняли, что произошло. Это не ошибка, а атака — Clickjacking. Она работает тихо, незаметно, и даже опытные пользователи попадаются на неё. Я видел, как клиенты теряли деньги из-за этого. Не потому что были глупыми — просто не знали, как защититься.

В этой статье — только то, что нужно сделать прямо сейчас, чтобы перестать быть мишенью для Clickjacking. Без теории, без лишних терминов. Только практика: как настроить защиту на сайте, как защитить себя в браузере и что делать, если вы разработчик или просто пользователь.

Что такое Clickjacking и почему он опасен

Clickjacking («кликджекинг») — это когда злоумышленник накладывает на страницу невидимый или прозрачный iframe с другим сайтом. Например, вы думаете, что кликаете на кнопку «Загрузить файл» на форуме, а на самом деле кликаете на «Перевести 10 000 рублей» в интерфейсе банка, который скрыт под вашей мышью.

Это не взлом. Это обман. Вы сами кликаете — просто не туда, куда думаете. И это работает, потому что браузеры по умолчанию позволяют любому сайту вставлять чужие страницы в iframe. Даже если вы авторизованы в банке, ваша сессия активна — и iframe может использовать это.

Пример из практики: клиент пришёл с жалобой — «я не делал перевод, но деньги исчезли». Оказалось, он зашёл на сайт с рекламой, где кнопка «Скачать PDF» была накрыта iframe с интерфейсом PayPal. Он кликнул — и подтвердил перевод. Без пароля, без 2FA — просто клик.

Как защитить свой сайт: X-Frame-Options

Если вы разработчик или администратор сайта — первое, что нужно сделать: запретить другим сайтам вставлять вашу страницу в iframe. Это делается через HTTP-заголовок X-Frame-Options.

Настройка простая. Добавьте один из трёх вариантов в ответ сервера (в nginx, Apache, или в коде приложения):

  • X-Frame-Options: DENY — запретить вставку вообще. Лучший выбор для большинства сайтов.
  • X-Frame-Options: SAMEORIGIN — разрешить вставку только если iframe находится на том же домене. Подходит, если вы используете iframe для своих же компонентов (например, встроенный календарь).
  • X-Frame-Options: ALLOW-FROM https://example.com — разрешить вставку только с указанного домена. Устаревший вариант, не поддерживается в некоторых браузерах.

Как добавить в nginx:

add_header X-Frame-Options DENY;

В Apache:

Header always set X-Frame-Options "DENY"

В Node.js (Express):

app.use((req, res, next) => {
  res.setHeader('X-Frame-Options', 'DENY');
  next();
});

Проверить, что заголовок работает, можно в DevTools → Network → выберите любой запрос → в заголовках ответа ищите X-Frame-Options. Если его нет — защита не настроена.

Важно: X-Frame-Options — устаревший стандарт. Современные браузеры рекомендуют использовать Content-Security-Policy с frame-ancestors. Но если вы только начинаете — начните с X-Frame-Options. Он работает везде, включая старые браузеры. А потом уже добавляйте CSP.

Как защитить себя как пользователь: расширения для браузера

Если вы не разработчик — вы всё равно можете защитить себя. Просто установите расширение, которое блокирует вредоносные iframe.

Вот три рабочих варианта:

Расширение Поддержка Что блокирует Сложность настройки
uBlock Origin Chrome, Firefox, Edge Все iframe с подозрительных доменов, включая скрытые Нет — работает сразу
NoScript (для Firefox) Firefox Блокирует все скрипты и iframe, пока вы не разрешите Средняя — нужно понимать, что разрешать
Clickjacking Blocker (Chrome Web Store) Chrome Только iframe с известными доменами атак Нет — просто включить

Рекомендую uBlock Origin. Он бесплатный, не замедляет сайт, не требует настройки и уже встроен в список популярных блокировщиков рекламы. Но он не только блокирует рекламу — он блокирует и скрытые iframe, которые используются в Clickjacking.

Как проверить, что расширение работает: зайдите на этот тестовый сайт. Если вы видите чёрный прямоугольник — защита не работает. Если вы видите сообщение «Blocked» — всё в порядке.

Если вы используете Firefox — NoScript даёт более жёсткую защиту, но требует внимания. Вы будете получать уведомления, когда сайт пытается запустить скрипт или iframe. Это неудобно, но безопасно. Подходит для тех, кто работает с финансами или конфиденциальными данными.

Что выбрать: настройка сайта или расширение?

Если вы разработчик — вы обязаны настроить X-Frame-Options на своём сайте. Это не опция — это базовая безопасность. Даже если вы не думаете, что ваш сайт — мишень, он может стать инструментом для атаки на других.

Если вы пользователь — установите uBlock Origin. Это самое простое и эффективное решение. Не ждите, пока вас обманут. Установите сейчас.

Если вы и разработчик, и пользователь — делайте и то, и другое. Защита слоёвая: один уровень — на сервере, второй — на клиенте. Так надёжнее.

Частые ошибки

  1. «У меня HTTPS — значит, всё безопасно». HTTPS защищает передачу данных, но не мешает iframe вставлять вашу страницу. Clickjacking работает даже на HTTPS-сайтах.
  2. «Я использую CSP, значит, X-Frame-Options не нужен». CSP с frame-ancestors — лучший способ, но он не поддерживается в старых браузерах. Если вы хотите защитить всех пользователей — используйте оба.
  3. «Я не банк — мне это не нужно». Атаки на Clickjacking часто используются для обмана на соцсетях, в магазинах, на сайтах с личными кабинетами. Даже если вы просто храните логины пользователей — ваш сайт может быть использован как фишинг-мост.
  4. «Я установил расширение — и забыл». Расширения обновляются. Проверяйте, что они включены. Иногда после обновления браузера они отключаются.
  5. «Я использую ALLOW-FROM». Этот режим не работает в Safari и Edge. Не полагайтесь на него.

Как лучше сделать: пошаговый план

Если вы разработчик — сделайте так:

  1. Откройте конфиг сервера (nginx, Apache, или код приложения).
  2. Добавьте заголовок: X-Frame-Options: DENY.
  3. Проверьте через DevTools → Network → убедитесь, что заголовок приходит в ответе.
  4. Потом добавьте CSP: Content-Security-Policy: frame-ancestors 'self'.
  5. Протестируйте сайт на clickjackingdemo.com — он должен показать «Blocked».

Если вы пользователь — сделайте так:

  1. Установите uBlock Origin в Chrome или Firefox.
  2. Перезагрузите браузер.
  3. Зайдите на clickjackingdemo.com.
  4. Если вы видите «Blocked» — вы защищены.
  5. Не отключайте расширение, даже если «всё работает».

Что делать, если сайт уже взломан?

Если вы обнаружили, что ваш сайт вставляется в iframe на чужом сайте — это уже не просто уязвимость, это инцидент.

Сделайте сразу:

  • Включите X-Frame-Options: DENY — это остановит дальнейшие атаки.
  • Проверьте логи: кто и когда запрашивал страницы с iframe-заголовками? Возможно, кто-то уже собирал данные.
  • Смените пароли пользователей, которые могли вводить их на вашем сайте за последние 7 дней.
  • Сообщите пользователям: «Мы обнаружили попытки фишинга через iframe. Убедитесь, что вы не вводили данные на сайтах, которые не принадлежат нам».

Не пытайтесь «починить» через JavaScript. Некоторые советуют использовать if (window.top !== window) { window.top.location = window.location; }. Это не надёжно — злоумышленник может отключить JavaScript или обойти это через CSP. Только HTTP-заголовки работают всегда.

Итог: что делать прямо сейчас

Если вы разработчик — добавьте X-Frame-Options: DENY на свой сайт сегодня. Это займёт 5 минут. Проверьте через DevTools. Забудьте про это на год — и вы спасёте пользователей от обмана.

Если вы пользователь — установите uBlock Origin. Не удаляйте его. Не отключайте. Он не мешает — он защищает. Это как ремень безопасности: вы не используете его, пока не случится авария. Но когда она случится — вы будете благодарны, что надели.

Clickjacking — не редкость. Это стандартная техника для кражи данных. И она работает, потому что люди думают: «я не банк, меня не тронут». Но вас тронут. Просто потому, что вы кликнули на что-то, что выглядело безопасно.

Защита — не про сложные технологии. Она про простые шаги, которые делают вовремя.

Информация в этой статье носит ознакомительный характер. Решения по настройке безопасности сайтов и защите персональных данных следует принимать совместно с профессиональным специалистом в области кибербезопасности.

Оцените статью
PEFile — Безопасность и технологии простым языком