如何使用Express JS 4.0的csurf?

Jér*_*nge 6 javascript csrf csrf-protection express

我一直在检查csurf的维基,但它是空的.此模块csrfToken()为用户请求添加了一个功能,但是,我应该如何使用它?

有人可以给出解释的代码示例吗?用户端应该怎么做?我应该在服务器端做什么?

Eth*_*own 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 + '".');
});
Run Code Online (Sandbox Code Playgroud)

尝试取出req.csrfToken()(或用其他东西替换它); 你会发现表格不再适用.

请注意,您需要使用会话csurf才能工作.如果您想了解您将使用的原因csurf,请参阅维基百科有关跨站点请求伪造(CSRF)的文章.