Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: CSRF, cross-site request forgery, security, frontend, token, same-site cookie

Что такое CSRF и как от него защититься на уровне фронтенда?

Вопрос проверяет понимание CSRF-атак и методов защиты на стороне клиента, что важно для безопасности веб-приложений.

Короткий ответ

CSRF (Cross-Site Request Forgery) — это атака, при которой злоумышленник заставляет браузер жертвы выполнить нежелательное действие на доверенном сайте, используя его куки. На фронтенде защита включает использование CSRF-токенов, которые сервер генерирует и проверяет при каждом запросе. Также помогает установка атрибута SameSite для кук (Strict или Lax) и проверка заголовка Origin или Referer. Важно не полагаться только на куки для аутентификации и использовать дополнительные механизмы, такие как кастомные заголовки.

Длинный ответ

Что такое CSRF?

CSRF (Cross-Site Request Forgery) — это тип атаки, при которой злоумышленник заставляет браузер аутентифицированного пользователя отправить запрос на целевой сайт без его ведома. Например, пользователь заходит на вредоносный сайт, который содержит скрытую форму или изображение, отправляющее POST-запрос на банковский сервер. Если пользователь уже авторизован на этом сервере (куки сохранены), запрос будет выполнен с его правами.

Как защититься на фронтенде?

Основные методы защиты на стороне клиента включают:

  • CSRF-токены: Сервер генерирует уникальный токен, который встраивается в HTML-форму или передается через заголовок (например, X-CSRF-Token). При каждом запросе фронтенд отправляет этот токен, а сервер проверяет его. Токен должен быть случайным и привязанным к сессии.
  • SameSite куки: Установка атрибута SameSite=Strict или Lax для кук предотвращает их отправку в кросс-сайтовых запросах. Например, SameSite=Lax разрешает отправку только для навигационных GET-запросов, что блокирует большинство CSRF-атак.
  • Проверка заголовков: Сервер может проверять заголовки Origin или Referer, чтобы убедиться, что запрос пришел с доверенного источника. На фронтенде это не требует дополнительных действий, но сервер должен быть настроен.
  • Кастомные заголовки: Использование кастомных заголовков (например, X-Requested-With: XMLHttpRequest) для AJAX-запросов, так как браузеры не позволяют устанавливать такие заголовки из кросс-доменных скриптов без CORS.

Пример реализации CSRF-токена на фронтенде

// Получаем CSRF-токен из мета-тега или куки
const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');

// Отправляем POST-запрос с токеном в заголовке
fetch('/api/transfer', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-CSRF-Token': csrfToken
  },
  body: JSON.stringify({ amount: 100, to: 'attacker' })
});

В этом примере токен извлекается из мета-тега, который сервер вставил в HTML. Затем он добавляется в заголовок запроса. Сервер проверяет токен и отклоняет запрос, если он не совпадает.

Вывод

CSRF-защита на фронтенде — это комбинация использования CSRF-токенов, правильной настройки кук (SameSite) и проверки заголовков. Эти методы эффективны против большинства атак, но требуют согласованной работы с сервером. Применять их стоит в любом веб-приложении, где есть аутентификация через куки и выполняются изменяющие состояние запросы (POST, PUT, DELETE).

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • HTML

    HTML

Ключевые слова

#CSRF

#cross-site request forgery

#security

#frontend

#token

#same-site cookie

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию