Межсайтовая подделка запроса (CSRF)
Узнайте, как атаки CSRF подделывают аутентифицированные запросы и как токены CSRF и файлы cookie SameSite защищают от них
«Межсайтовая подделка запроса (CSRF)» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Что такое CSRF
Межсайтовая подделка запроса (CSRF) заставляет браузер аутентифицированного пользователя отправлять несанкционированные запросы веб-приложению. Браузер автоматически отправляет файлы cookie вместе с запросами, поэтому без дополнительных мер сервер не может отличить легитимные запросы от поддельных.
Как работает CSRF
Сценарий:
- Жертва вошла в bank.com (файл cookie сеанса находится в браузере)
- Жертва посещает страницу злоумышленника, содержащую:
<img src="https://bank.com/transfer?to=attacker&amount=1000"> - Браузер отправляет запрос GET с прикреплённым файлом cookie bank.com
- Банк обрабатывает перевод
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
Шаги тестирования:
- Определите запросы, изменяющие состояние (POST, PUT, DELETE)
- Удалите или измените токен CSRF и отправьте запрос повторно
- Создайте междоменную отправку формы и проверьте, будет ли она успешной
- Проверьте атрибут 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 — локальная установка не требуется.
Все уроки этого курса
- SQL-инъекции: как и почему они работают
- Межсайтовый скриптинг (XSS)
- Межсайтовая подделка запроса (CSRF)
- Небезопасная конфигурация и открытые сервисы