小编tyt*_*tho的帖子

如何在node.js/express中测试受csrf保护的端点

我在快递中实现了csrf(跨站点请求伪造)保护,如下所示:

...
app.use(express.csrf());
app.use(function (req, res, next) {
  res.cookie('XSRF-TOKEN', req.csrfToken());
  next();
});
...
Run Code Online (Sandbox Code Playgroud)

这非常有效.Angularjs在通过$ http服务发出的所有请求中使用了csrf令牌.我通过我的角度应用程序发出的请求非常好.

我的问题是测试这些api端点.我正在使用mocha运行我的自动化测试和请求模块来测试我的api端点.当我使用请求模块向使用csrf(POST,PUT,DELETE等)的端点发出请求时,即使它正确使用了cookie等,它也会失败.

还有其他人提出解决方案吗?有人需要更多信息吗?

测试示例:

function testLogin(done) {
  request({
    method: 'POST',
    url: baseUrl + '/api/login',
    json: {
      email: 'myemail@email.com',
      password: 'mypassword'
    } 
  }, function (err, res, body) {
    // do stuff to validate returned data
    // the server spits back a 'FORBIDDEN' string,
    // which obviously will not pass my validation
    // criteria
    done();
  });
}
Run Code Online (Sandbox Code Playgroud)

csrf request node.js express angularjs

13
推荐指数
1
解决办法
6812
查看次数

标签 统计

angularjs ×1

csrf ×1

express ×1

node.js ×1

request ×1