> For the complete documentation index, see [llms.txt](https://notes.kraken-security.ru/kraken/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://notes.kraken-security.ru/kraken/krupicy-znanii/uyazvimosti/clickjacking.md).

# Clickjacking

### Что такое кликджекинг (clickjacking)&#x20;

Вид атаки, при которой пользователь неосознанно кликает на элементы веб-страницы, предполагая, что он взаимодействует с совсем другим контентом. \
\
Злоумышленники накладывают невидимый фрейм (или части фрейма) поверх страницы, которую пользователь на самом деле видит. Например, жулик может наложить невидимый лайк на видео в YouTube, так что пользователь, нажимая на видео для воспроизведения, на самом деле ставит лайк другой странице или подписывается на канал, о котором ничего не знает.

Этот метод используют для распространения вредоносного ПО, несанкционированного сбора данных и других не менее зловредных целей.&#x20;

### Как защититься от кликджекинга?

1. **Заголовки безопасности, такие как X-Frame-Options или Content Security Policy (CSP).**

Этот способ более надежный, так как работает на уровне HTTP, до загрузки какого-либо содержимого пользователя. Когда X-Frame-Options установлен в `DENY`→ он полностью запрещает отображение страницы в фрейме. Когда установлен в `SAMEORIGIN` → страница сможет отображаться в фрейме только на том же домене.

**`X-Frame-Options: DENY`** Или: `X-Frame-Options: SAMEORIGIN`

Также можно использовать [Content Security Policy (CSP)](https://notes.kraken-security.ru/kraken/krupicy-znanii/obshie-stati/o-content-security-policy-csp) с директивой `frame-ancestors`, которая позволяет более гибко контролировать, какие источники могут встроить вашу страницу во фрейм.

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

Этот CSP разрешает встраивание страницы только если она открыта непосредственно на вашем домене ('self') или на домене trustedwebsite.com.\
\
**2. Скрипты, которые обнаруживают попытки встраивания страницы в фрейм.**\
\
**Вот пример** JavaScript-скрипта, который обнаруживает, если ваша веб-страница загружается внутри фрейма, и предпринимает действия для предотвращения кликджекинга:

`if (window.top !== window.self) { // Проверяем, загружается ли страница в топ-уровне окне`&#x20;

`window.top.location = window.location; // Перенаправляем браузер на "настоящий" адрес страницы // Или же можно отобразить сообщение об ошибке или предложить пользователю пройти по правильной ссылке }`

В этом скрипте: \
`window.top` → ссылается на самый верхний фрейм в иерархии вложенных фреймов\
`window.self` → ссылается на текущее окно.&#x20;

Если они не равны, значит, страница загружена внутри фрейма, и скрипт перенаправляет браузер на тру веб-страницу, выходя из внешнего фрейма.

**3. Визуальная индикация**\
\
Иногда можно использовать техники, которые служат для визуальной индикации того, что элементы интерфейса безопасны для взаимодействия. Пример: добавление шума или водяных знаков в фон, чтобы осложнить создание злоумышленниками невидимых фреймов.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://notes.kraken-security.ru/kraken/krupicy-znanii/uyazvimosti/clickjacking.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
