gpt4 book ai didi

javascript - 如何使用 CSRF 测试 express form post?

转载 作者:行者123 更新时间:2023-11-28 20:53:16 25 4
gpt4 key购买 nike

我正在尝试为我的服务器端表单验证编写测试,但我不断收到禁止错误。看来这需要一个两步过程。第一步,从表单中获取CSRF值。第 2 步,使用 CSRF 值发布到表单处理程序。但是,无论我如何尝试发帖,我都会遇到禁止的错误。

--完整测试:https://github.com/socketwiz/swblog/blob/master/test/contact.js#L57-L100

我试过这样更改以下行: https://github.com/socketwiz/swblog/blob/master/test/contact.js#L85

.send({name: 'foo', 'X-CSRF-Token': token})

.set('X-CSRF-Token', token)

.set('Cookie', ['X-CSRF-Token=' + token])

但我尝试的任何东西似乎都不能满足 CSRF 要求。我尝试的越多,这看起来很简单的事情就越复杂。也许我做错了。有什么想法吗?

最佳答案

感谢@shawnzhu,你对 cookie 的评论帮助我弄清楚了我需要做什么。我有一个想法,我把它复杂化了。这是我想出的:

https://github.com/socketwiz/swblog/blob/master/test/contact.js

it('should not post just a name', function(done) {
request(mock)
.get('/contact')
.end(function(err, res){
var $html = jQuery(res.text);
var csrf = $html.find('input[name=_csrf]').val();

request(mock)
.post('/api/contact.json')
.set('cookie', res.headers['set-cookie'])
.send({
_csrf: csrf,
name: 'Mary Jane'
})
.expect(function(res){
assert.equal(undefined, res.body.name);
assert.equal('You must provide a valid email address', res.body.email);
assert.equal('You must provide a message', res.body.message);
})
.expect(500, done);
});
});

关于javascript - 如何使用 CSRF 测试 express form post?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36665796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com