我一直在检查csurf的wiki,但它是空的。此模块为用户请求添加了csrfToken()
函数,但是,我应该如何使用它?
有人可以提供解释代码示例吗?用户端应该怎么做?我应该在服务器端做什么?
答案 0 :(得分:5)
csurf
中间件旨在拒绝包含有效负载的请求(例如,身体参数),如果它没有有效令牌。以下是您将如何使用它:
app.use(require('body-parser')());
app.use(require('cookie-parser')('YOUR SECRET GOES HERE'));
app.use(require('express-session')());
app.use(require('csurf')());
app.get('/some-form', function(req, res){
res.send('<form action="/process" method="POST">' +
'<input type="hidden" name="_csrf" value="' + req.csrfToken() + '">' +
'Favorite color: <input type="text" name="favoriteColor">' +
'<button type="submit">Submit</button>' +
'</form>');
});
app.post('/process', function(req, res){
res.send('<p>Your favorite color is "' + req.body.favoriteColor + '".');
});
尝试取出req.csrfToken()
(或将其替换为其他内容);你会发现表格不再适用。
请注意,您需要csurf
的会话才能运作。如果您想了解使用csurf
的原因,请参阅cross-site request forgery (CSRF)上的维基百科文章。