首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kraken.js CSRF处理

Kraken.js CSRF处理
EN

Stack Overflow用户
提问于 2013-11-21 20:08:25
回答 3查看 5.3K关注 0票数 7

我对krakenjs有问题,我是一个节点/快递新手。

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

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

代码语言:javascript
复制
<input type="hidden" name="_crsf" value="<%= _csrf %>" />

它产生适当的csrf,在那里没有问题。

这是我的路线

代码语言:javascript
复制
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)时,我得到了这个错误。

代码语言:javascript
复制
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吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-19 02:07:59

实际上,你的问题是:

代码语言:javascript
复制
<input type="hidden" name="_crsf" value="<%= _csrf %>" />

而不是:

代码语言:javascript
复制
<input type="hidden" name="_csrf" value="<%= _csrf %>" />

注意name属性中的错误。

票数 4
EN

Stack Overflow用户

发布于 2013-11-21 22:50:04

诀窍是,您需要将POST测试封装在GET中,并从cookie中解析必要的CSRF令牌。

下面是一个例子:https://stackoverflow.com/a/18776974/1935918

票数 1
EN

Stack Overflow用户

发布于 2015-08-04 05:50:58

除非您需要csrf保护,否则将其放在您的config.json中以完全禁用它。然后你的应用程序就会像其他程序一样运行。

代码语言:javascript
复制
"middleware": {        
      "appsec": {
        "priority": 110,
        "module": {
            "name": "lusca",
            "arguments": [
                {
                    "csrf": false,
                    "xframe": "SAMEORIGIN",
                    "p3p": false,
                    "csp": false
                }
            ]
        }
    },
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20130901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档