express 4.x 系にて、CSRF対策を行う方法について、試行錯誤したので、結果のみをシェア

必要なnpmライブラリのインストール

npm install cookie-parser --save
npm install express-session --save
npm install csurf --save

app.js

まず以下のようにrequireを使用してnpmライブラリを呼び出す.

var express = require('express'),
        app = express(),
        post = require('./routes/post');

var cookieParser = require('cookie-parser');
var session = require('express-session');
var csrf = require('csurf');

appに紐づけmiddlewareとして使用できるようにする.

//csrf
app.use(cookieParser('keyboard cat'));
app.use(session({
        resave: true,
        saveUninitialized: true,
        secret: 'rAnd0m',
        cookie: {maxAge : 60000}
}));
app.use(csrf({cookie: false}));

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

index.ejs

以下のように、<input type="hidden" name="_csrf" value="<%= csrftoken %>">とすることで、 csrf埋め込み処理をform内に埋め込むことが出来る.

        <form method="post" action="/posts/<%= i %>">
        <input type="submit" value="del">
        <input type="hidden" name="_csrf" value="<%= csrftoken %>">
        </form>

参考サイト

tech.chakapoko.com