我一直在查看csurf的维基,但它是空的。该模块向用户请求添加了一个csrfToken()
函数,但我应该如何使用它呢?
可以有人给出带有解释的代码示例吗?用户端和服务器端我应该做什么?
我一直在查看csurf的维基,但它是空的。该模块向用户请求添加了一个csrfToken()
函数,但我应该如何使用它呢?
可以有人给出带有解释的代码示例吗?用户端和服务器端我应该做什么?
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
,请参阅维基百科上关于跨站请求伪造(CSRF)的文章。