Files
uno-click/bff/middleware/csrfRequired.js
T
2026-05-13 14:20:41 +00:00

28 lines
1.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { env } from '../config/env.js';
export function csrfRequired(req, res, next) {
const cookieToken = req.cookies?.[env.COOKIE_CSRF_NAME];
const headerToken = req.get('x-csrf-token');
// Для SameSite cookie защита уже встроена в браузер
// Если cookie есть и SameSite установлен - это уже защита от CSRF
// Дополнительная проверка заголовка для обратной совместимости
if (cookieToken) {
// Cookie с SameSite=Lax/Strict уже защищает от CSRF
// Если заголовок есть - проверяем совпадение (double submit pattern)
if (headerToken && cookieToken !== headerToken) {
return res.status(403).json({
error: 'CSRF_INVALID',
message: 'CSRF token mismatch',
});
}
// Если заголовка нет - разрешаем (SameSite cookie защищает)
return next();
}
// Cookie нет - это ошибка
return res.status(403).json({
error: 'CSRF_INVALID',
message: 'CSRF token is missing',
});
}