我没有使用像把手或视图这样的模板语言(我捆绑了客户端代码),因此我很难弄清楚如何在不将其传递到视图的情况下发送csrf令牌 .
几乎所有的例子都像这样注入令牌服务器端:
app.get('/form', csrfProtection, function(req, res) {
// pass the csrfToken to the view
res.render('send', { csrfToken: req.csrfToken() })
})
我不完全确定注入是否是安全机制正常工作所必需的 .
注意:我将cookie选项设置为true,并且在csurf之前调用cookie解析器 - 但我仍然得到 ForbiddenError: invalid csrf token (我相信它发生是因为我发送了_csrf秘密作为令牌,但我猜它发送了秘密,_csrf,我们还必须发送csrf令牌 .
题:
是否有其他可接受的方式将csrf令牌发送到客户端(例如header,cookies,res.body等)?
1 回答
你可以使用cookies . 确保在路线之前定义以下代码 . 像这样做:
这个whay你将在客户端使用生成的令牌获得一个cookie . 此令牌将针对每个请求进行更新 . 要将此令牌添加到ajax请求,您只需要读取cookie并将令牌传递给请求 . 例如使用axios: