小编jas*_*sel的帖子

Express的CSRF令牌问题

我正在尝试使用csurf和使用CSRF保护express.我的应用程序使用Angular作为前端,所以我认为将此添加到我的应用程序就足够了:

app.use(cookieParser('test secret'));
app.use(cookieSession({
    secret: 'test secret'
}));
app.use(csrf({
    cookie: {
        key: 'XSRF-TOKEN'
    }
}));
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试发出POST请求时,我得到403("无效的CSRF令牌")错误.据我所知,这个问题所在的csrf-tokens模块:在第44行中,expected变量看起来像qMnHLQGhivxECx5WtwuktDNA-snimacq30z-XNh2X-KTpdlkU6Og,而secrettoken变量的样子qMnHLQGhivxECx5WtwuktDNA.由于expectedtoken不同,发生403错误.

到目前为止,我已经尝试了以下方法:

  • 设置secure: false和/或signed: true在我的csurf选项中
  • 确保我cookie-sessioncookie-parser中间件之前运行csurf
  • 重新安装我的所有npm模块以防万一
  • 在我的电脑上大喊大叫

我可能会切换到基于会话的令牌,但是对于Angular来说这不会很顺利,我不确定它是否能解决我的问题.

有谁知道如何解决这个问题,或者原因可能是什么?

PS顺便说一句,我也注意到一个(可能是不相关的)问题:req.csrfToken()方法似乎返回一个字符串,其值是完全无关expected的值csrf-tokens或字符串存储在cookie中.

csrf node.js express angularjs

2
推荐指数
1
解决办法
2017
查看次数

标签 统计

angularjs ×1

csrf ×1

express ×1

node.js ×1