ClickJacking или “Вы уверены в том, что нажимаете на ссылку?”

Среда, 6 января 2010 года, 20:44. Напечатано в категориях CSS, JavaScript, Безопасность1

Clickjacking – страшная вещь.
Смысл КликДжекинга заключается в следующем:
Зайдя на обычный сайт, Вы ничего не подозревая решили нажать на красивую ссылку. Нажали… И очутились совсем не там, где предполагали. И начало происходить что – то странное. Почему так?
Как всегда, всё очень просто.
Этого можно добиться посредством использования таблиц каскадных стилей(CSS) и фреймов(iframe). Поверх желаемой ссылки накладывается iframe с прозрачностью, заданной через CSS, равной нулю. В итоге вы кликаете мышкой в фрейме по тому, чего совсем не предполагали. В пример приведу небольшой код:

<style type="text/css">
.frame {
  -moz-opacity: 0;
  opacity: 0;
  filter: alpha(opacity=0);
  position:absolute;
  width:100px;
  height:30px;
}
</style>
<iframe src="http://clickjacking.nono/e.php" scrolling="no" class="frame"></iframe>
<a href="/dom/">Всё о доме</a>

Всё очень просто и это работает к тому же без помощи JavaScript!
А теперь на секунду представьте, что можно сделать со всем этим при помощи JavaScript… Бр-ррр, аж дух захватывает! А именно:

  1. Заставить невидимый iframe постоянно двигаться за курсором и при этом клик на любое место означает клик по внутренностям iframe.
  2. Подгружать с сервера нужную информацию и динамически на протяжении долгого времени использовать пользователя под свои нужды.

Далее можно привести ещё огромное множество примеров.
Давайте подумаем над тем, как всё это предотвратить.

Первый способ – удалять динамически все iframe со страницы с помощью следующего короткого JavaScript кода:

var
  allIframe = document.getElementsByTagName('iframe'),
  len = allIframe.length;
while( len-- )
  allIframe[ len ].parentNode.removeChild( allIframe[ len ] );

Также легко создадим из этого кода закладку для браузера:

<a href="javascript:(function(){var a=document.getElementsByTagName('iframe'),b=a.length;while(b--){a[b].parentNode.removeChild(a[b])};})()">Удалить iframes</a>

Теперь Вы можете перенести ссылку, находящуюся ниже, на панель закладок вашего браузера, и кликнув по ней вы очистите текущую страницу от iframe:
Удалить iframes

Второй способ – скачать и установить плагин NoScript и разрешать выполняться JavaScript только на доверенных сайтах!

P. S. Я выбрал второй способ :P



Комментарии(1)

Regent пишет в среду, 06.01.2010 в 21:46 Ответить
Кстати, вот полезная ссылка по этому поводу:
http://james.padolsey.com/general/clickjacking-twitter/
Уведомлять меня о новых комментариях по почте
Для корректной работы отправки комментариев необходимо включить JavaScript
Либо скачать новый нормальный браузер