Вопрос проверяет понимание CSRF-атак и методов защиты на стороне клиента, что важно для безопасности веб-приложений.
CSRF (Cross-Site Request Forgery) — это тип атаки, при которой злоумышленник заставляет браузер аутентифицированного пользователя отправить запрос на целевой сайт без его ведома. Например, пользователь заходит на вредоносный сайт, который содержит скрытую форму или изображение, отправляющее POST-запрос на банковский сервер. Если пользователь уже авторизован на этом сервере (куки сохранены), запрос будет выполнен с его правами.
Основные методы защиты на стороне клиента включают:
// Получаем 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
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию