Боремся с Clickjacking

Что такое clickjacking

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

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

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

Демонстрация кликджекинга

(абсолютно безвредно)

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

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

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

if(top != self) {
  top.location = self.location;
}

К сожалению, это код неуниверсален, существуют несколько способов его обхода разной степени изощрённости и применимости в браузерах. Подробнее можно почитать в исследовании 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.

Comments are closed.