fix: CSRF 403 — читать токен из body (_csrf), cookieName без __Host- (v0.4.0)
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ipwhitelist",
|
"name": "ipwhitelist",
|
||||||
"version": "0.3.0",
|
"version": "0.4.0",
|
||||||
"description": "IP WhiteList microservice for cloud provider",
|
"description": "IP WhiteList microservice for cloud provider",
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -42,6 +42,16 @@ function initCsrf() {
|
|||||||
// Если сессии нет — пустая строка (допустимо для /login до установки сессии).
|
// Если сессии нет — пустая строка (допустимо для /login до установки сессии).
|
||||||
getSessionIdentifier: (req) => req.sessionID || '',
|
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: {
|
cookieOptions: {
|
||||||
// secure: true → cookie передаётся только по HTTPS. Важно в продакшене.
|
// secure: true → cookie передаётся только по HTTPS. Важно в продакшене.
|
||||||
secure: process.env.NODE_ENV === 'production',
|
secure: process.env.NODE_ENV === 'production',
|
||||||
|
|||||||
Reference in New Issue
Block a user