【问题标题】:Express+node CSRF ForbiddenExpress+node CSRF 禁止
【发布时间】:2012-08-24 21:05:07
【问题描述】:

我遇到过类似的问题,但没有一个解决方案对我有用。我正在使用 express 3,使用 ejs 进行模板化。令牌被填充到 html 中,如下所示:

<input type="hidden" name="_csrf" value="IS+SwCqr3j+vGW9QSqIk56ZC/">

这是我的模板 html 在输入字段中的样子:

<input type="hidden" name="_csrf" value=<%= token %>/>

但是当我提交表单时,我得到了

Error: Forbidden at Object.exports.error 

这是我的主要应用配置功能的样子

app.configure(function () {
    app.engine('.html', require('ejs').__express);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.cookieParser());
    app.use(express.static(__dirname + '/public'));
    app.use(express.session({
        store:  new mongoStore({
            url:'mongodb://localhost/test',
            maxAge: 300000
        }),
        secret: '076ee61d63ba104r4e34872411e433b2',
        cookie: {
            path     : '/',
            httpOnly : true,
            maxAge   : 1000*60*60*24*30*12
        }
    }));
    app.use(express.csrf());
    app.use(function(req, res, next){
        res.locals.token = req.session._csrf;
        next();
    });
    app.use(app.router);
});

会话运行良好,并且正在填充令牌,所以我不知道现在该做什么。

【问题讨论】:

    标签: node.js express csrf


    【解决方案1】:

    如果有人遇到这个,我忘了在令牌周围添加引号

    <input type="hidden" name="_csrf" value="<%= token %>"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-24
      • 2015-11-09
      • 1970-01-01
      • 2018-11-06
      • 2018-07-04
      • 1970-01-01
      • 2012-05-03
      • 2016-11-26
      相关资源
      最近更新 更多