Javascript 如何使用Express JS 4.0';什么是csurf?

Javascript 如何使用Express JS 4.0';什么是csurf?,javascript,express,csrf,csrf-protection,Javascript,Express,Csrf,Csrf Protection,我一直在检查的维基,但它是空的。这个模块向用户请求添加了一个csrfToken()函数,但是,我应该如何使用它呢 有人能给出一个代码示例并加以解释吗?在用户端我应该做什么?在服务器端我应该怎么做?csurf中间件设计用于在没有有效令牌的情况下拒绝包含有效负载(例如主体参数)的请求。以下是您将如何使用它: app.use(require('body-parser')()); app.use(require('cookie-parser')('YOUR SECRET GOES HERE')); ap

我一直在检查的维基,但它是空的。这个模块向用户请求添加了一个
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 + '".');
});
app.use(require('body-parser')());
使用(require('cookie-parser')('YOUR SECRET go HERE'));
应用程序使用(要求('express-session')());
应用程序使用(要求('csurf')());
app.get('/someform',函数(req,res){
res.send(“”)+
'' +
“最喜欢的颜色:”+
“提交”+
'');
});
应用程序post('/process',函数(req,res){
res.send(“您最喜欢的颜色是“+req.body.favoriteColor+”);
});
尝试取出
req.csrfToken()
(或用其他东西替换它);您将发现该表单不再有效


请注意,
csurf
需要会话才能工作。如果您想了解使用csurf的原因,请参阅app.post中的Wikipedia文章。

,我是否必须检查csrfToken?不,Paresh,csurf中间件会为您处理。如果
\u csrf
字段不存在且不正确,它将在您的+post+处理程序之前被拒绝。感谢您的快速回复。我是express.js中的return index.html,cookie中有_csrftoken,前面是angular,我得到cookie并设置为带有_csrf的表单标记,将cookie中的token设置为hidden,现在我按submit,但token始终返回EBADCSRFTOKEN。如果我错了,请告诉我。我正在签入req.body csrf令牌,我也在检查浏览器cookie值,它与传递的值匹配,但它仍然拒绝请求。我无法从您的描述中判断,Paresh。也许可以试着用你的申请文件和表格来源问一个新问题?