2017-10-12 146 views
0

我写了一个项目,它的接近它的生产阶段,我意外地发现了一个bug在我的代码csurf节点:多次使用,并没有错误CSRF令牌

我的项目有一个页面中,我有很多形式,我使用ajax发布它们,我发现我没有更新每个ajax请求的csrf标记,并且我的csurf-npm模块没有抛出任何错误。

我的项目是如此这么大,我不能在这里写的,但我使用的唯一的地方是:

var csrfProtection = require("csurf")({cookie: true}); 

在我的路由器:

router.post(csrfProtection(),/*some BILIBILI function*/); 

和我” m发送此页到我发布我的表格与阿贾克斯:

req.csrfToken(); 

你能帮我找出发生了什么事。

谢谢

+0

我不认为这是一个问题,令牌可以是唯一的会话。请参阅https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Synchronizer_.28CSRF.29_Tokens –

+0

@GabrielBleu谢谢你,我以为这是一些如何重新创建每当你使用req.csrfToken()(即使你的会话没有改变,它也会给出另一个csrfToken)我认为它的实现方式是它有一个会话中保存的密钥,它将用于解密该令牌并随时重新创建它 –

+0

how我可以将这个问题标记为已回答吗? –

回答