Ваше местоположение в сети:
Рубрика:

XSS атаки

Разделы сайта:

Я давно уже хотел рассказать о такой опасности в интернете как XSS - cross site scripting. Не удивляйтесь аббревиатуре - она действительно сформирована неправильно. Но дело в том, что за аббревиатурой CSS уже давно закрепилось другое значение (и о нем я расскажу в другой раз).

Если в двух словах, то XSS - это такая уязвимость на сайте, которую могут использовать против вас. А именно, украсть ваш пароль от этого сайта, открыть вам страницу с каким-нибудь мошенническим сайтом, попытаться выполнить на вашем компьютере зловредный код.

Как можно защититься от XSS? К сожалению, для пользователя это практически невозможно. Атака XSS может произойти в любой момент, когда вы посещаете любимый форум. Вопрос только в том, к чему эта атака приведет. Если у вас обновленная операционная система и хороший антивирус, то, скорей всего, вам ничего не страшно. За исключением одного. Аккаунт на этом форуме вы все равно потеряете. Но в этом виноваты уже не вы. Но обо всем по-порядку.

xss attacks
Javascript

Подробнее про javascript вы можете прочитать в статье по ссылке. Но, опять-таки, кратко можно сказать, что это - скрипт, выполняемый уже на вашем компьютере после загрузки страницы из интернета. Сейчас они встречаются практически везде. Что это могут быть за скрипты? Ну, например, их загрузка приводит к тому, что меню на сайте работают более удобно, счетчики посещаемости используют скрипты, при помощи них работает анимация и многое другое. Поэтому браузеры настроены на то, чтобы выполнять скрипты на сайтах.

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

Пользовательские данные

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

Предположим, что я бы вообще не фильтровал комментарии в этой статье. Тогда если на моем блоге оставить комментарий <script>alert('xss')</script>, то у всех посетителей этой страницы станет выполняться указанный скрипт. В данном случае он безопасен, он просто выводит сообщение с надписью xss.

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

Кража cookies

Если вы не знаете, что такое cookies, то можете почитать статью по ссылке. А вкратце это - пользовательские данные, относящиеся к конкретному сайту. Например, когда вы авторизуетесь на моем форуме, у вас появляется cookie, позволяющая впоследствии заходить на форум без ввода пароля. Тем самым, если кто-нибудь получит этот файл, он сможет входить на сайт под вашим именем. Ваш пароль он не узнает, но поменять его сможет, после чего вы потеряете логин на форуме. В случае с таким форумом это, наверное, не так и страшно, а вот потерять доступ к своей электронной почте может быть крайне неприятно.

Как же злоумышленник крадет cookies? К счастью, он не сможет при помощи xss украсть ваши cookies от произвольного сайта. То есть чтобы украсть логин от моего форума, ему нужно будет сначала разместить соответствующий скрипт именно на моем форуме (тем самым, нужно, чтобы на моем форуме была дыра в безопасности). А чтобы украсть вашу почту на mail.ru, ему нужно разместить соответствующий скрипт в блогах mail.ru или аналогичном месте. Думаете, такого не бывает? Тогда почитайте занимательную статью на Хабре про недавно обнаруженную уязвимость на mail.ru.

Так что за скрипт размещается для кражи cookies? На самом деле, такой скрипт устроен очень просто. Он не выводит сообщение на экран, а вместо этого берет cookie, относящуюся к этому документу (метод document.cookie), и передает ее на сайт злоумышленника (где уже другой скрипт сохраняет "печеньку" в файл).

Действия вебмастеров

Как же вебмастера борются с XSS-атаками на своих сайтах? Как я и сказал выше, нужно фильтровать размещаемые пользовательские данные. Причем, нужно делать это с умом. Приведу простой пример. Если просто удалять слово <script> из текста, да и делать это только один раз, то размещенный на вашем сайте кусок кода <scr<script>ipt>alert('xss')</script> изначально будет безобиден, но именно после работы скрипта превратится в упомянутый выше <script>alert('xss')</script>. Так что у нас тут получается борьба между фильтрами и изворотливыми хакерами.

Пассивные XSS

Те XSS-атаки, что я описывал выше, относятся к разряду "активных". Пользователь совсем от них не защищен, достаточно посетить страницу с вставленным скриптом, и все, уязвимость сработает. Такие атаки опасней всего, но обычно от них вебмастера все-таки делают защиту. Но бывают еще пассивные XSS, одна из них как раз и описана в статье на Хабре (ссылка чуть выше).

Основанием для таких атак являются, например, формы поиска на сайтах. Текст, вводимый в них, тоже нужно фильтровать, но об этом владельцы сайтов часто забывают. А зря. Да, если хакер введет скрипт прямо в форму поиска, выполнится он только на его компьютере. Но что он еще может сделать - так это сформировать ссылку на "результаты поиска". Если кто-нибудь проследует по такой ссылке, то скрипт выполнится и у него.

В результате хакер может размещать такие ссылки на различных форумах, посылать их по электронной почте... Конечно, от пользователя требуется кликнуть по ссылке, чтобы атака сработала, но часто ссылка бывает хорошо замаскирована.

Какой можно сделать вывод? Ну, во-первых, если вы вебмастер, то вам обязательно надо подумать о возможных xss-атаках на ваших пользователей. Во-вторых, от активных XSS как пользователь не убережешься, поэтому это - еще один повод иметь хороший антивирус и обновлять свою систему. Что касается пассивных XSS, то защита, в принципе, от них есть. Нужно поосторожней переходить по ссылкам в письмах и в местах, которым вы не доверяете. Особенно, если такая ссылка ведет на известный вам ресурс, на котором вы зарегистрированы, но при этом полный адрес ссылки имеет внушительную длину или же не прочитывается полноценно.

← Смена хостингаУдаленная помощь →
comments powered by Disqus