fix: CSRF 403 — читать токен из body (_csrf), cookieName без __Host- (v0.4.0)
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ipwhitelist",
|
||||
"version": "0.3.0",
|
||||
"version": "0.4.0",
|
||||
"description": "IP WhiteList microservice for cloud provider",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -42,6 +42,16 @@ function initCsrf() {
|
||||
// Если сессии нет — пустая строка (допустимо для /login до установки сессии).
|
||||
getSessionIdentifier: (req) => req.sessionID || '',
|
||||
|
||||
// ⚠️ csrf-csrf v4 по умолчанию читает токен из заголовка x-csrf-token.
|
||||
// Наши формы (EJS) отправляют его в теле POST как поле _csrf.
|
||||
// Без этой строки токен не находится → 403 на каждый POST.
|
||||
getCsrfTokenFromRequest: (req) => req.body && req.body._csrf,
|
||||
|
||||
// Имя cookie без префикса __Host- (дефолт __Host-psifi.x-csrf-token
|
||||
// требует Secure-флаг; при NODE_ENV≠production secure:false → cookie
|
||||
// отклоняется браузером по HTTPS и валидация падает).
|
||||
cookieName: 'csrf-token',
|
||||
|
||||
cookieOptions: {
|
||||
// secure: true → cookie передаётся только по HTTPS. Важно в продакшене.
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
|
||||
Reference in New Issue
Block a user