Cyber Security Academy · Урок

Межсайтовая подделка запроса (CSRF)

Узнайте, как атаки CSRF подделывают аутентифицированные запросы и как токены CSRF и файлы cookie SameSite защищают от них

Урок 3 из 413 шагов

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

Что такое CSRF

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

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

Сценарий:

  1. Жертва вошла в bank.com (файл cookie сеанса находится в браузере)
  2. Жертва посещает страницу злоумышленника, содержащую: <img src="https://bank.com/transfer?to=attacker&amount=1000">
  3. Браузер отправляет запрос GET с прикреплённым файлом cookie bank.com
  4. Банк обрабатывает перевод

CSRF с запросами POST

Для CSRF через POST требуется форма:

<form action="https://bank.com/transfer" method="POST" id="f">
  <input name="to" value="attacker">
  <input name="amount" value="1000">
</form>
<script>document.getElementById("f").submit()</script>

Токены CSRF

Основная защита — токен CSRF: случайное секретное значение, уникальное для сеанса (или запроса), встроенное в формы. Сервер проверяет токен в каждом запросе, изменяющем состояние. Злоумышленник с другого домена не может прочитать токен (политика одного источника).

Атрибут SameSite для файлов cookie

SameSite=Strict: файл cookie вообще не отправляется с межсайтовыми запросами. SameSite=Lax: файл cookie отправляется при безопасной навигации верхнего уровня (переходах по ссылкам), но не при POST-запросах с других сайтов. Современные браузеры используют Lax по умолчанию, что значительно снижает риск CSRF.

Шаблон двойной отправки файла cookie

Альтернатива хранению токена на сервере: установите случайный файл cookie CSRF и потребуйте также передавать его как параметр запроса. Злоумышленник не может прочитать файл cookie (доступ разрешён только для одного источника), поэтому не сможет сопоставить его со значением в данных формы.

Пользовательские заголовки запросов

Для запросов AJAX требование пользовательского заголовка, например X-Requested-With: XMLHttpRequest, обеспечивает защиту от CSRF, поскольку браузеры блокируют междоменным скриптам установку произвольных заголовков (это контролируется CORS).

Когда токенов CSRF недостаточно

Токены CSRF не защищают, если:

  • существует XSS — злоумышленник может прочитать токен через JavaScript
  • токен раскрывается в URL (заголовок Referer)
  • токен предсказуем или используется повторно
  • CORS неправильно настроен и разрешает источник злоумышленника

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

Шаги тестирования:

  1. Определите запросы, изменяющие состояние (POST, PUT, DELETE)
  2. Удалите или измените токен CSRF и отправьте запрос повторно
  3. Создайте междоменную отправку формы и проверьте, будет ли она успешной
  4. Проверьте атрибут SameSite у файлов cookie сеанса

CSRF в API

Интерфейсы REST API, использующие JSON, часто не требуют защиты от CSRF, если они:

  • требуют Content-Type: application/json (HTML-формы не могут его установить)
  • используют токены для аутентификации (заголовок авторизации, а не файлы cookie)

Однако API, принимающие файлы cookie, всё равно должны реализовывать защиту от CSRF.

Современное состояние защиты от CSRF

Поскольку SameSite=Lax используется по умолчанию в Chrome, Firefox и Safari, многие традиционные атаки CSRF блокируются. Однако атаки через поддомены и некоторые схемы навигации всё ещё могут обойти Lax. Для надёжной защиты сочетайте SameSite с токенами CSRF.

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

Какова основная защита от атак CSRF в веб-приложениях?

Итоги урока

CSRF использует автоматическое прикрепление браузером файлов cookie к запросам, чтобы отправлять поддельные аутентифицированные запросы с вредоносных сайтов. Основная защита: токены CSRF, проверяемые на сервере. Дополнительная защита: атрибут SameSite=Strict/Lax для файлов cookie. API, использующие аутентификацию с токеном в заголовках, а не файлы cookie, по своей природе устойчивы к CSRF. Сочетайте меры защиты: XSS может обойти токены CSRF, если присутствует в приложении.

Можно начать бесплатно

Изучай Cyber Security Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
76
Уроки
303

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

Урок «Межсайтовая подделка запроса (CSRF)» бесплатный?

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

Чему я научусь в уроке «Межсайтовая подделка запроса (CSRF)»?

Узнайте, как атаки CSRF подделывают аутентифицированные запросы и как токены CSRF и файлы cookie SameSite защищают от них Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

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

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

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

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

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

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