使用express.csrf()进行错误处理

时间:2014-05-26 07:35:38

标签: node.js express

我对使用CSRF保护有一些疑问。当我使用没有有效csrf-token的“post”路由时,我得到一个“错误:禁止在Object.exports.error ....”,是否可以将没有有效令牌的请求重定向到特殊路由?

这是我的代码:

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的用户无法访问任何路由,对吧?那么我可以仅对特殊路线使用保护吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

1)是的。你可以使用

res.redirect('/redirect_route'); 

请参阅http://expressjs.com/4x/api.html#res.redirect

2)我的cookie或隐藏字段根本不安全,你可以使用你喜欢的东西

3)是的。您可以使用中间件来保护特殊路线

app.get('/account', checkToken, routes.account);

function checkUser(req, res, next) {
    res.locals.csrftoken = req.csrfToken();  
    next(); 
}