XSS атака. Виды и методы защиты от этой атаки

15 ноября 2020

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


Причин допущения XSS атаки на сайтах великое множество:

  • пониженная бдительности администрации сайтов, не проверяющей пользовательские данные; недостаточная обработка этих данных или вовсе её отсутствие;
  • использование старых версий сторонних библиотек и фреймворков, в которых ранее были найдены уязвимости;
  • отсутствие веб-фаервола, блокирующего вредоносные запросы.
  • акже возможной причиной является некорректная настройка CSP, позволившая воспроизвести вредоносный код.



Стоит рассказать и о видах атак. Их всего три:

  • Reflected (отражённые или же непостоянные)
  • Stored (хранимые/постоянные)
  • DOM-Based.

Для начала, расскажем про первый тип. Отражённые атаки срабатывают, если человек переходит по ссылке хакера. Подобные уязвимости появляются в случае исполнения данных, предоставленных сервером, обычно в параметрах HTTP-запроса или в форме HTML, напрямую серверными скриптами для анализа и отображения страницы результатов для этого клиента.

Кроме того, непостоянная атака возможна не только со стороны сервера, но и обработке кода браузером.


Второй тип, или же хранимые атаки, возможен при успешном внедрении хакером вредоносного кода на сервер. Этот код активируется в браузере каждый раз при обращении пользователей к странице.

Для полного понимания, приведём пример постоянной атаки: форумы, где разрешается комментировать информацию в формате HTML.

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


И, наконец, существует третий тип атак XSS - межсайтовый скриптинг через DOM.  Этому виду уязвимостей не требуется внедрение данных на стороне сервера.

Для полного понимания информации будет полезно пояснить, как же совершаются эти «нападения». XSS-атаки вышеописанным методом происходят из-за неполной обработки через JavaScript объектов DOM. Главным отличительным признаком этого вида XSS является тот факт, что уязвимость не встраивается в HTML-код, а заключается прямо в коде JavaScript. Именно это и вызывает препятствия для защитных систем в выявлении атак и их эффективного устранения.




Пример уязвимого кода к XSS

Чтобы дополнить информацию и улучшить понимание материала, приведём пример уязвимости на языке программирования PHP и ее использования злоумышленниками.

Если злоумышленник в GET параметре логина введет произвольный HTML код, то он выполнится. То есть, если введет <h1>Заголовок</h1>, то текст выведется с большим шрифтом. Это довольно безобидный пример, но злоумышленник может подгрузить произвольный JS код, который может выполнять от имени пользователя различные действия.




Чем же так опасна XSS атака и каковы последствия ее использования?

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

Как мы видим, XSS атака — вещь довольно серьезная. Поэтому людям необходимо знать несколько способов ее предотвращения.

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

Кроме того, для защиты от XSS атак полезно будет настроить CSP или же Content Security Policy. CSP является одним из дополнительных уровней безопасности, имеющим возможность находить и устранять определённые типы атак, в числе которых есть и XSS.




Чем же CSP помогает от XSS атак?

Подобные атаки пользуются доверием браузера к информации, полученной с сервера. «Вредные» функции выполняются в браузере «жертвы», ведь он доверяет источнику.

CSP же даёт возможность ограничить загрузку и выполнение кода с удаленных серверов и не только.