Clickjacking
↑ 7.3 Безопасность фронтенда · ← Предыдущая · → Следующая
Зачем это на собесе
Небольшая, но частая тема: проверяют, знаете ли вы заголовки против встраивания.
Суть
Злоумышленник встраивает ваш сайт в невидимый iframe на своей странице и заманивает пользователя кликнуть, «нажимая» на скрытую кнопку (подтвердить перевод, удалить аккаунт).
Защита
| Способ | Пример |
|---|---|
Заголовок X-Frame-Options | DENY или SAMEORIGIN (устаревающий) |
CSP frame-ancestors | frame-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.
Вопросы с ответами
Как запретить встраивание сайта в iframe?
Content-Security-Policy: frame-ancestors 'none'(или'self'), для старых браузеров ещёX-Frame-Options.