Express jeton CSRF de validation

Je vais avoir des problèmes avec les jetons CSRF. Quand je soumettre un formulaire, une nouvelle XSRF-TOKEN est généré mais je pense que je suis générant deux jetons différents, je suis un peu confus. Il y a aussi un gage appelé _csrf, donc je ne vois deux témoins dans les outils de développement (XSRF-JETON et _csrf), _csrf ne change pas après un post.

Ce que je veux faire est de générer un nouveau jeton pour chaque poste de la demande et vérifier si elle est valide ou pas. Une chose que je sais que je devrais le faire pour la sécurité, mais je suis bloqué.

Il a été une longue journée et je suis nouveau dans l'Express et NodeJS.

Voici ma configuration actuelle.

var express = require('express')
, passport = require('passport')
, flash = require('connect-flash')
, utils = require('./utils')
, csrf = require('csurf')
//setup route middlewares
,csrfProtection = csrf({ cookie: true })
, methodOverride = require('method-override')
, bodyParser = require("body-parser")
, parseForm = bodyParser.urlencoded({ extended: false })
, cookieParser = require('cookie-parser')
, cookieSession = require('cookie-session')
, LocalStrategy = require('passport-local').Strategy
, RememberMeStrategy = require('../..').Strategy;
var app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.engine('ejs', require('ejs-locals'));
app.use(express.logger());
app.use(express.static(__dirname + '/../../public'));
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride());
app.use(express.session({ secret: 'keyboard cat' }));
app.use(flash());
//Initialize Passport!  Also use passport.session() middleware, to support
//persistent login sessions (recommended).
app.use(passport.initialize());
app.use(passport.session());
app.use(passport.authenticate('remember-me'));
app.use(app.router);
app.use(csrf());
app.use(function (req, res, next) {
res.cookie('XSRF-TOKEN', req.csrfToken());
res.locals.csrftoken = req.csrfToken();
next();
});

Routes

app.get('/form', csrfProtection, function(req, res) {
//pass the csrfToken to the view
res.render('send', { csrfToken: req.csrfToken()});
});
app.post('/process', parseForm, csrfProtection, function(req, res) {
res.send('data is being processed');
});

envoyer.ejs (/formulaire GET)

<form action="/process" method="POST">
<input type="hidden" name="_csrf" value="<%= csrfToken %>">
Favorite color: <input type="text" name="favoriteColor">
<button type="submit">Submit</button>
</form>
InformationsquelleAutor salep | 2015-10-10