Clickjacking

clickjacking[1] — относительно новый и не очень широко известный тип атак на веб-сайты. Его суть в том, что пользователь, совершая клик на специально сформированной странице злоумышленника, на самом деле кликает по ссылке на совершенно другом сайте. Это может быть использовано как для относительно безобидных накруток голосований (например, ретвитов или лайков), так и более разрушительных вещей, главное, чтобы для этого требовался щелчок мыши.

Как это работает

Атакуемый сайт оборачивается в прозрачный ифрейм. Поверх него располагаюткакую-нибудь привлекательную ссылку, на которую захочет кликнуть «жертва» (при атаке на твитер в 2009 такой приманкой стала кнопка c текстом «Don't click»). Теперь вместо клика на неё будет происходить клик в ифрейме (так как он находится поверх кнопки).

Замечу, что защита от clickjacking совершенно иная, чем от CSRF, хотя цели злоумышленников в обоих атаках — заставить пользователя совершить запрос к сайту под своими правами.

Защищаемся через javscript

Самый простой способ — сделать редирект с помощью js, если сайт открыт в ифрейме:

<code class="erlang" data-result="[object Object]" data-second_best="[object Object]"><span class=""><span class="title">if</span><span class="params">(top != self)</span> {
  <span class="title">top</span>.</span>location = self.location;
}</code>

К сожалению, это код неуниверсален, существуют несколько способов его обхода разной степени изощрённости и применимости в браузерах. Подробнее можно почитать в исследовании Busting Frame Busting: a Study of Clickjacking Vulnerabilities on Popular Sites.

Защищаемся через заголовки

В дополнение к предыдущему методу, разработчики браузеров ввели новый заголовок ответа сервера X-Frame-Options.
Он позволяет не отображать сайт, если он загружается c другого домена через ифрейм. Пример настроек для Apache и nginx:

Header always append X-Frame-Options SAMEORIGIN
add_header X-Frame-Options SAMEORIGIN;

Работает в IE 8.0+, FF 3.6.9+, Opera 10.50+, Safari 4.0+ и Chrome 4.1+, на момент написания поста по рунету это более 70% пользователей.

В новой версии Django 1.4 для добавления этого заголовка есть настраиваемый XFrameOptionsMiddleware.

Подробно про Clickjacking на сайте Open Web Application Security Project.

Запись навигация

Top