Clickjacking — это атака, которая обманом заставляет пользователя щелкнуть элемент веб-страницы, который невидим или замаскирован под другой элемент. Это может привести к тому, что пользователи непреднамеренно загрузят вредоносное ПО, посетят вредоносные веб-страницы, предоставят учетные данные или конфиденциальную информацию, переведут деньги или приобретут товары в Интернете.

Как правило, кликджекинг выполняется путем отображения невидимой страницы или HTML-элемента внутри iframe поверх страницы, которую видит пользователь. Пользователь считает, что он щелкает видимую страницу, но на самом деле он щелкает невидимый элемент на дополнительной странице, расположенной поверх нее.

Смягчение кликджекинга с помощью заголовка ответа X-Frame-Options

Заголовок ответа X-Frame-Options передается как часть ответа HTTP веб-страницы, указывая, следует ли разрешить браузеру отображать страницу внутри тега ‹FRAME› или ‹IFRAME›.

Для заголовка X-Frame-Options разрешены три значения:

  • DENY — запрещает любому домену отображать эту страницу во фрейме.
  • SAMEORIGIN — позволяет отображать текущую страницу во фрейме на другой странице, но только в пределах текущего домена.
  • URI РАЗРЕШЕНИЯ ОТ: позволяет отображать текущую страницу во фрейме, но только в определенном URI, например www.example.com/frame-page.

Тест на кликджекинг — уязвим ли ваш сайт?

Простой способ проверить, уязвим ли ваш сайт для кликджекинга, — создать HTML-страницу и попытаться включить конфиденциальную страницу с вашего сайта в iframe. Важно выполнить тестовый код на другом веб-сервере, потому что это типичное поведение при атаке кликджекинга.

Используйте код, подобный приведенному ниже, который является частью Руководства по тестированию OWASP:

<html>
<head>
<title>Clickjack test page</title>
</head>
<body>
<p>Website is vulnerable to clickjacking!</p>
<iframe src="http://www.yoursite.com/sensitive-page" width="500" height="500"></iframe>
</body>
</html>

Просмотрите HTML-страницу в браузере и оцените страницу следующим образом:

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

Простой javascript, который позволяет автоматически перенаправлять и перенаправлять на исходную страницу

<script>
if (top != window) {
top.location = window.location;
}
</script>

Мы можем заблокировать переход, вызванный изменением top.location в обработчике события beforeunload.

Верхняя страница (включающая одну, принадлежащую хакеру) устанавливает для нее предотвращающий обработчик, например:

window.onbeforeunload = function() {
  return false;
};

есть несколько способов остановить эту обработку разными способами, вот некоторые из них, где вы можете решить их простым способом