Уменьшите количество кликджекинга с помощью XFO или CSP

Кликджекинг — это злонамеренная атака, при которой пользователей обманом заставляют нажимать на ссылки или элементы пользовательского интерфейса на сайте, который выглядит как доверенный и знакомый сайт. Обычно это достигается путем внедрения части или всего доверенного сайта во вредоносный сайт с помощью <iframe> .

Заголовок X-Frame-Options (XFO) и директива frame-ancestors в заголовке Content-Security-Policy (CSP) могут смягчить атаки кликджекинга, контролируя, как сайт может быть встроен в <iframe> .

Как проваливается аудит Lighthouse

Аудит будет пройден, если заголовок XFO установлен с помощью SAMEORIGIN или DENY или директива frame-ancestors установлена ​​в заголовке CSP. Аудит завершится неудачей, если ни одна из этих политик управления кадрами не настроена.

Отчет Lighthouse предупреждает, что не найден заголовок ответа CSP или XFO, способный уменьшить вероятность кликджекинга.
Отчет Lighthouse предупреждает, что не найден заголовок ответа CSP или XFO, способный уменьшить вероятность кликджекинга.

Как настроить политику контроля фреймов для предотвращения кликджекинга

Политика управления кадрами должна быть установлена ​​в заголовках HTTP исходного запроса документа. Заголовок X-Frame-Options и директива frame-ancestors в Content-Security-Policy не будут работать, если они установлены в элементе <meta> .

заголовок XFO

Установка DENY или SAMEORIGIN для заголовка XFO смягчит атаки кликджекинга:

X-Frame-Options: SAMEORIGIN
X-Frame-Options: DENY

Директива SAMEORIGIN разрешает отображение страницы только в том случае, если все родительские фреймы имеют то же происхождение, что и сама страница. И наоборот, директива DENY предотвращает отображение страницы во фрейме, независимо от происхождения родительского фрейма.

заголовок CSP

Директива frame-ancestors в заголовке CSP определяет, какие сайты могут встраивать данную страницу в <frame> , <iframe> , <object> или <embed> . Подобно XFO, директиву CSPframe frame-ancestors можно использовать для смягчения атак кликджекинга, установив для нее значение self или none :

Content-Security-Policy: frame-ancestors 'self';
Content-Security-Policy: frame-ancestors 'none';

Однако директива frame-ancestors более гибкая, чем XFO, поскольку она может устанавливать определенные родительские источники, которые могут встраивать страницу:

Content-Security-Policy: frame-ancestors 'self' https://example.com;

Ресурсы