【发布时间】:2013-09-17 09:43:42
【问题描述】:
我已经以这样的方式实现了 csrf(跨站点请求伪造)保护:
...
app.use(express.csrf());
app.use(function (req, res, next) {
res.cookie('XSRF-TOKEN', req.csrfToken());
next();
});
...
这很好用。 Angularjs 在通过 $http 服务发出的所有请求中都使用了 csrf 令牌。我通过我的 Angular 应用程序提出的请求非常有效。
我的问题是测试这些 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();
});
}
【问题讨论】:
-
你能放一个你尝试过的测试样本吗?
标签: node.js angularjs express request csrf