«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Понимание и предотвращение подделки межсайтовых запросов (CSRF) в JavaScript

Понимание и предотвращение подделки межсайтовых запросов (CSRF) в JavaScript

Опубликовано 8 ноября 2024 г.
Просматривать:126

Understanding and Preventing Cross-Site Request Forgery (CSRF) in JavaScript

Введение

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

Что такое CSRF?

Подделка межсайтовых запросов (CSRF) — это тип атаки, которая заставляет пользователя выполнить действия в веб-приложении, в котором он проходит проверку подлинности. В отличие от межсайтового сценария (XSS), который использует доверие пользователя к конкретному веб-сайту, CSRF использует доверие веб-сайта к браузеру пользователя.

Как работают CSRF-атаки

CSRF-атаки обычно включают три основных этапа:

1. Аутентификация жертвы: Жертва входит на законный веб-сайт (например, свой банк).

2. Вредоносный запрос: Злоумышленник обманом заставляет жертву посетить вредоносный сайт, который отправляет запрос на законный сайт от имени жертвы.

3. Выполнение: Законный сайт обрабатывает запрос, поскольку он исходит от аутентифицированного пользователя, что приводит к нежелательным действиям, таким как перевод средств или изменение данных учетной записи.

Пример CSRF-атаки

Рассмотрим сценарий, в котором веб-сайт банка позволяет осуществлять денежные переводы с помощью простого запроса GET:

Click here to win $1000!

Если жертва нажмет на эту ссылку, войдя в свой банковский счет, перевод будет выполнен без ее согласия.

Предотвращение атак CSRF

Чтобы предотвратить CSRF-атаки, разработчики могут реализовать несколько стратегий:

1. Шаблон токена синхронизатора (токены CSRF)
2. Файлы cookie SameSite
3. Двойная отправка файла cookie

1. Шаблон токена синхронизатора (токены CSRF)

Одним из наиболее эффективных методов предотвращения атак CSRF является использование токенов CSRF. Токен CSRF — это уникальное, секретное и непредсказуемое значение, создаваемое сервером и отправляемое клиенту. Этот токен должен быть включен в любой запрос на изменение состояния, сделанный клиентом.

Пошаговая реализация:

1. Создайте токен CSRF:

const generateCSRFToken = () => {
    return crypto.randomBytes(24).toString('hex');
};

2. Отправьте токен CSRF клиенту:

В HTML-форме включите токен CSRF в качестве скрытого поля:

3. Проверьте токен CSRF на сервере:
На стороне сервера проверьте токен для каждого запроса на изменение состояния:

const validateCSRFToken = (req, res, next) => {
    const token = req.body.csrf_token;
    if (token === req.session.csrfToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

2. Файлы cookie SameSite

Атрибут SameSite для файлов cookie может смягчить атаки CSRF, контролируя отправку файлов cookie с межсайтовыми запросами.

res.cookie('session', 'value', { sameSite: 'Strict' });

3. Двойная отправка файла cookie

Метод двойной отправки файла cookie включает отправку токена CSRF как в виде файла cookie, так и в качестве параметра запроса.

Пошаговая реализация:

1. Установите токен CSRF как файл cookie:

res.cookie('csrfToken', csrfToken, { httpOnly: true });

** Включить токен в запросы: **

** 3. Проверьте токен на сервере: **

const validateCSRFToken = (req, res, next) => {
    const token = req.cookies.csrfToken;
    const bodyToken = req.body.csrf_token;
    if (token && token === bodyToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

Заключение

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

Внедрите эти методы предотвращения CSRF в свои приложения JavaScript уже сегодня и защитите данные своих пользователей. Поделитесь своими мыслями и опытом в комментариях ниже. Не забудьте подписаться на дополнительные советы и рекомендации по веб-безопасности!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/rigalpatel001/understanding-and-preventing-cross-site-request-forgery-csrf-in-javascript-2ne0?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163. .com, чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3