Node.js Случайный ForbiddenError: неверный токен csrf через пакет CSURF - PullRequest
0 голосов
/ 18 июня 2019

При использовании пакета csurf мы сталкиваемся с ошибками CSRF.Что странно, это влияет только на несколько пользователей из 100-х.Эти затронутые пользователи всегда являются одними и теми же пользователями.Я не верю, что это является проблемой при передаче токена csrf в браузер, так как 99% запросов работают.Мне интересно, если что-то не так с моей конфигурацией, из-за которой эти токены по ошибке истекают.Или это просто что-то не так с машиной пользователя, где он истекает.У пользователей, испытывающих это, есть действительные имена входа и сеансы.

В своем журнале я вижу следующее:

ForbiddenError: неверный токен csrf на csrf (/ cme / apps / install /express_server / node_modules / csurf / index.js: 112: 19) в Layer.handle [как handle_request] (/cme/apps/install/express_server/node_modules/express/lib/router/layer.js:95:5) в trim_prefix(/cme/apps/install/express_server/node_modules/express/lib/router/index.js:317:13) в /cme/apps/install/express_server/node_modules/express/lib/router/index.js:284:7 в Function.process_params (/cme/apps/install/express_server/node_modules/express/lib/router/index.js:335:12) в следующем (/ cme / apps / install / express_server / node_modules / express / lib / router/index.js:275:10) в cookieParser (/cme/apps/install/express_server/node_modules/cookie-parser/index.js:71:5) в Layer.handle [как handle_request] (/ cme / apps / install/express_server/node_modules/express/lib/router/layer.js:95:5) в trim_prefix (/ cme / apps / install / express_server)/node_modules/express/lib/router/index.js:317:13) в /cme/apps/install/express_server/node_modules/express/lib/router/index.js:284:7 в Function.process_params (/ cme /apps / install / express_server / node_modules / express / lib / router / index.js: 335: 12) в следующем (/cme/apps/install/express_server/node_modules/express/lib/router/index.js:275:10)в methodOverride (/cme/apps/install/express_server/node_modules/method-override/index.js:79:5) в Layer.handle [как handle_request] (/ cme / apps / install / express_server / node_modules / express / lib /router / layer.js: 95: 5) в trim_prefix (/cme/apps/install/express_server/node_modules/express/lib/router/index.js:317:13) в / cme / apps / install / express_server / node_modules /express / lib / router / index.js: 284: 7 в Function.process_params (/cme/apps/install/express_server/node_modules/express/lib/router/index.js:335:12) в следующем (/ cme / apps/install/express_server/node_modules/express/lib/router/index.js:275:10) по внутреннему адресу (/ cme / apps / install / express_server / node_modules / hat / i)ndex.js: 47: 33) в xXssProtection (/cme/apps/install/express_server/node_modules/x-xss-protection/index.js:26:7) в internalNext (/ cme / apps / install / express_server / node_modules /шлем / index.js: 51: 7) в nosniff (/cme/apps/install/express_server/node_modules/dont-sniff-mimetype/index.js:4:5)

Вот мойтекущая настройка:

var app = express();

// express configurations
app.enable("strict routing");
app.set("views", __dirname + "/views");
app.set('view engine', 'pug');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(helmet());
app.use(methodOverride());
app.use(cookieParser("secretsecretsecretsessioncode"));

app.set('trust proxy', true);
app.use(csrf({
  cookie: true
}));
app.use(session({
  secret: 'secretsecretsecretsessioncode',
  cookie: {
    maxAge: 12 * 60 * 60 * 1000, // 12 hours
    secure: true
  },
  proxy: true,
  saveUninitialized: true,
  resave: false,
  store: new mongoStore({
    mongooseConnection: mongo.db,
    autoReconnect: true,
    stringify: false
  })
}));
app.use(adldap_model.passport.initialize());
app.use(adldap_model.passport.session());

app.use(function (req, res, next) {
  res.locals.csrftoken = req.csrfToken();
  next();
});
...