initial commit

This commit is contained in:
root
2026-05-13 14:20:41 +00:00
commit 6e178d2012
6022 changed files with 399872 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
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',
});
}