Kraken.js CSRF处理

Onu*_*kan 7 csrf node.js express

我有krakenjs的问题,我是节点/表达新手.

krakenjs设置为默认的csrf保护(我知道如何禁用,但我不想),但我不知道如何处理csrf并避免403错误.

在ejs文件中我得到了这一行.

<input type="hidden" name="_crsf" value="<%= _csrf %>" />
Run Code Online (Sandbox Code Playgroud)

它生成适当的csrf,那里没有问题.

这是我的路线

server.post('/isengard/fact/new', function(req,res){
    var new_fact = Fact({
        title : req.body.fact_title,
        description : req.body.fact_description,
        source : req.body.fact_source
    });
    new_fact.save(function(err){
        if(err) return handleError(err);
        var model = {status:true};
        res.render('isengard/create',model);
    });
});
Run Code Online (Sandbox Code Playgroud)

但是当我发送表格(POST)时,我收到了这个错误.

403 Error: Forbidden
at Object.exports.error (/Users/onur/Documents/node/sage/node_modules/express/node_modules/connect/lib/utils.js:63:13)
at createToken (/Users/onur/Documents/node/sage/node_modules/express/node_modules/connect/lib/middleware/csrf.js:82:55)
at /Users/onur/Documents/node/sage/node_modules/express/node_modules/connect/lib/middleware/csrf.js:48:24
at csrf (/Users/onur/Documents/node/sage/node_modules/kraken-js/node_modules/lusca/index.js:112:13)
at /Users/onur/Documents/node/sage/node_modules/kraken-js/node_modules/lusca/index.js:60:21
at xframe (/Users/onur/Documents/node/sage/node_modules/kraken-js/node_modules/lusca/index.js:131:9)
at /Users/onur/Documents/node/sage/node_modules/kraken-js/node_modules/lusca/index.js:60:21
at p3p (/Users/onur/Documents/node/sage/node_modules/kraken-js/node_modules/lusca/index.js:144:9)
at /Users/onur/Documents/node/sage/node_modules/kraken-js/node_modules/lusca/index.js:60:21
at Object.appsec (/Users/onur/Documents/node/sage/node_modules/kraken-js/node_modules/lusca/index.js:65:9)
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释我如何处理csrf?

小智 4

事实上,你的问题在于:

<input type="hidden" name="_crsf" value="<%= _csrf %>" />
Run Code Online (Sandbox Code Playgroud)

代替:

<input type="hidden" name="_csrf" value="<%= _csrf %>" />
Run Code Online (Sandbox Code Playgroud)

请注意属性中的拼写错误name