Clickjacking

↑ 7.3 Безопасность фронтенда · ← Предыдущая · → Следующая

Желательно~3 мин чтенияУровень: senior

Зачем это на собесе

Небольшая, но частая тема: проверяют, знаете ли вы заголовки против встраивания.

Суть

Злоумышленник встраивает ваш сайт в невидимый iframe на своей странице и заманивает пользователя кликнуть, «нажимая» на скрытую кнопку (подтвердить перевод, удалить аккаунт).

Защита

СпособПример
Заголовок X-Frame-OptionsDENY или SAMEORIGIN (устаревающий)
CSP frame-ancestorsframe-ancestors 'none' или 'self'
SameSite cookieв iframe чужого сайта cookie не отправятся
Подтверждение опасных действийпароль, 2FA, повторный ввод

Frame busting через JS (if (top !== self)) — ненадёжно, не полагайтесь.

add_header X-Frame-Options "DENY" always;
add_header Content-Security-Policy "frame-ancestors 'none'" always;

Нюансы

  • если нужно легитимное встраивание (виджеты), укажите точные домены в frame-ancestors;
  • для своих iframe используйте sandbox и минимальные разрешения;
  • похожие атаки: UI redressing, cursorjacking.

Вопросы с ответами