Clickjacking
В этой статье расскажем про кликджекинг: в чём суть атаки и какие есть возможности защиты.
Last updated
В этой статье расскажем про кликджекинг: в чём суть атаки и какие есть возможности защиты.
Last updated
Вид атаки, при которой пользователь неосознанно кликает на элементы веб-страницы, предполагая, что он взаимодействует с совсем другим контентом. Злоумышленники накладывают невидимый фрейм (или части фрейма) поверх страницы, которую пользователь на самом деле видит. Например, жулик может наложить невидимый лайк на видео в YouTube, так что пользователь, нажимая на видео для воспроизведения, на самом деле ставит лайк другой странице или подписывается на канал, о котором ничего не знает.
Этот метод используют для распространения вредоносного ПО, несанкционированного сбора данных и других не менее зловредных целей.
Заголовки безопасности, такие как X-Frame-Options или Content Security Policy (CSP).
Этот способ более надежный, так как работает на уровне HTTP, до загрузки какого-либо содержимого пользователя. Когда X-Frame-Options установлен в DENY
→ он полностью запрещает отображение страницы в фрейме. Когда установлен в SAMEORIGIN
→ страница сможет отображаться в фрейме только на том же домене.
X-Frame-Options: DENY
Или: X-Frame-Options: SAMEORIGIN
Также можно использовать с директивой frame-ancestors
, которая позволяет более гибко контролировать, какие источники могут встроить вашу страницу во фрейм.
Content-Security-Policy: frame-ancestors 'self' https://trustedwebsite.com;
Этот CSP разрешает встраивание страницы только если она открыта непосредственно на вашем домене ('self') или на домене trustedwebsite.com. 2. Скрипты, которые обнаруживают попытки встраивания страницы в фрейм. Вот пример JavaScript-скрипта, который обнаруживает, если ваша веб-страница загружается внутри фрейма, и предпринимает действия для предотвращения кликджекинга:
if (window.top !== window.self) { // Проверяем, загружается ли страница в топ-уровне окне
window.top.location = window.location; // Перенаправляем браузер на "настоящий" адрес страницы // Или же можно отобразить сообщение об ошибке или предложить пользователю пройти по правильной ссылке }
В этом скрипте:
window.top
→ ссылается на самый верхний фрейм в иерархии вложенных фреймов
window.self
→ ссылается на текущее окно.
Если они не равны, значит, страница загружена внутри фрейма, и скрипт перенаправляет браузер на тру веб-страницу, выходя из внешнего фрейма.
3. Визуальная индикация Иногда можно использовать техники, которые служат для визуальной индикации того, что элементы интерфейса безопасны для взаимодействия. Пример: добавление шума или водяных знаков в фон, чтобы осложнить создание злоумышленниками невидимых фреймов.