Cross-Site Scripting (XSS) — одна из самых распространённых уязвимостей веб-приложений, и при этом одна из самых опасных для пользователей.
Её суть в том, что злоумышленник может внедрить в страницу произвольный JavaScript-код, который выполнится в браузере жертвы.
Результат — кража сессий, обход авторизации, подмена интерфейса, фишинг и даже полный контроль над аккаунтом.
Многие разработчики недооценивают XSS, считая её «несерьёзной», но опытные атакующие комбинируют её с другими уязвимостями, превращая мелкую брешь в точку взлома всей системы.
Как работает XSS
При XSS-атаке злоумышленник добивается того, чтобы в браузере жертвы выполнился вредоносный JavaScript:
-
Код может подгружаться из внешнего источника или быть встроенным прямо в страницу.
-
Скрипт выполняется с теми же правами, что и оригинальный сайт.
-
Это позволяет красть cookies, токены, отправлять запросы от лица пользователя и менять содержимое страницы.
Основные виды XSS
-
Stored XSS (хранимая)
Вредоносный код сохраняется на сервере (например, в базе данных) и вставляется в страницу при её загрузке.
Пример: вредоносный комментарий на форуме, который выполняется у каждого, кто его откроет. -
Reflected XSS (отражённая)
Код передаётся в запросе (например, через URL) и возвращается сервером в ответ без фильтрации.
Пример: поддельная ссылка, при переходе по которой выполняется вредоносный скрипт. -
DOM-based XSS
Уязвимость возникает в JavaScript на стороне клиента, когда скрипт небезопасно обрабатывает данные из URL или других источников.
Пример: фронтенд-код подставляет значение из хеша URL прямо в HTML без проверки.
Как находят XSS
-
Вручную — тестирование форм, полей поиска, URL-параметров, заголовков HTTP.
-
Инструментами — Burp Suite, OWASP ZAP, XSStrike, XSSer.
-
Через анализ DOM — проверка клиентского JavaScript на опасные операции (
innerHTML
,document.write
,eval
).
Примеры полезных нагрузок
-
<script>alert(1)</script>
— базовая проверка на выполнение кода. -
<img src=x onerror=alert(1)>
— обход некоторых фильтров. -
"><svg onload=alert(1)>
— внедрение в HTML-атрибут.
В реальных атаках на место alert(1)
подставляют код кражи cookies, перенаправления на фишинговый сайт или загрузки дополнительных скриптов.
Как защититься от XSS
-
Санитизация и фильтрация пользовательских данных на сервере.
-
Экранирование символов при вставке в HTML, JavaScript, CSS или URL.
-
Использование CSP (Content-Security-Policy) для ограничения выполнения скриптов.
-
Запрет
eval
и подобных функций в коде. -
Проверка входных данных и вывод только в безопасном виде.
Почему XSS до сих пор в топе OWASP
-
Простота эксплуатации.
-
Ошибки фильтрации и валидации встречаются даже в крупных проектах.
-
Возможность комбинировать с другими уязвимостями для полного взлома.
Хотите не только распознавать XSS, но и использовать её как инструмент тестирования безопасности?
В модуле «XSS: Межсайтовый скриптинг» вы разберёте Stored, Reflected и DOM XSS, научитесь их находить и использовать, а также отрабатывать защиту с помощью фильтрации, санитизации и CSP. Четыре практических задания превратят теорию в реальный навык.
📘 Понравилась статья?
Больше практики и реальных заданий — в Kraken Academy.
А чтобы точно ничего не пропустить — подпишись на наш Telegram-канал.
Рекомендуемые статьи
