【发布时间】:2013-12-06 12:13:23
【问题描述】:
我对 krakenjs 有疑问,我是 node/express 新手。
krakenjs 设置为默认 csrf 保护(我知道如何禁用,但我不想这样做),但我不知道如何处理 csrf 并避免 403 错误。
在 ejs 文件中我得到了这一行。
<input type="hidden" name="_crsf" value="<%= _csrf %>" />
它会生成正确的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);
});
});
但是当我发送表单 (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)
谁能解释我如何处理 csrf?
【问题讨论】: