Node.js 使用express.csrf()进行错误处理
我对使用CSRF保护有一些疑问。当我在没有有效csrf令牌的情况下使用“post”路由时,我得到一个“错误:Object.exports.Error…..禁止”,是否可以将没有有效令牌的请求重定向到特殊路由 这是我的密码:Node.js 使用express.csrf()进行错误处理,node.js,express,Node.js,Express,我对使用CSRF保护有一些疑问。当我在没有有效csrf令牌的情况下使用“post”路由时,我得到一个“错误:Object.exports.Error…..禁止”,是否可以将没有有效令牌的请求重定向到特殊路由 这是我的密码: app.use(express.csrf()); app.use(function (req, res, next) { res.locals.csrftoken = req.csrfToken(); next(); }); 另一个问题是,什么是
app.use(express.csrf());
app.use(function (req, res, next) {
res.locals.csrftoken = req.csrfToken();
next();
});
另一个问题是,什么是保护此令牌的好方法?是否最好将其存储在cookie中,而不是使用隐藏字段?还是在安全方面没有任何区别
form(method="post",action="/test")
input(type="hidden", name="_csrf", value="#{csrftoken}")
第三个问题是:禁用cookie的用户不能访问任何路由,对吗?那么我只能在特殊路线上使用防护装置吗
谢谢 是的。你可以用
res.redirect('/redirect_route');
看
2) 我认为cookie或隐藏字段根本不安全,您可以随意使用
3) 对。您可以使用中间件来保护特殊路由
app.get('/account', checkToken, routes.account);
function checkUser(req, res, next) {
res.locals.csrftoken = req.csrfToken();
next();
}
非常感谢。有禁用cookie的用户呢?我如何使用重定向触发错误:禁止?对于错误处理,可以使用错误中间件。请参阅错误处理部分。错误中间件有4个功能参数,将无论如何进行处理。只需检查403错误并将用户重定向到您需要的位置。对于禁用的Cookie,请使用隐藏字段:)嗯…但是csrf令牌保存在会话中,并且只能通过会话id找到?有了Put cookies,就没有id了?