Node.js 为什么Express/Connect会在每次请求时生成新的CSRF令牌?
据我所知,有两种方法可以防止CSRF攻击:1)每个会话使用令牌,2)每个请求使用令牌 1) 在第一种情况下,当初始化用户会话时,仅生成一次CSRF令牌。因此,用户一次只有一个有效令牌 2) 在第二种情况下,每个请求都会生成新的CSRF令牌,之后旧的CSRF令牌将失效。 这使得利用该漏洞更加困难,因为即使攻击者窃取令牌(通过XSS),当用户转到下一页时,令牌也会过期。 但另一方面,这种方法使webapp的可用性降低。下面是一段很好的引语: 例如,如果他们点击“后退”按钮并提交带有新值的表单,提交将失败,并且可能会向他们发送一些恶意错误消息。如果他们试图在第二个选项卡中打开资源,他们会发现会话在一个或两个选项卡中随机中断 在分析Node.js框架(基于)时,我注意到每个请求都会生成一个新的CSRF令牌, 但是旧的不会失效 我的问题是:在每个请求上提供新的CSRF令牌而不使旧令牌无效的原因是什么? 为什么不为每个会话生成一个令牌呢Node.js 为什么Express/Connect会在每次请求时生成新的CSRF令牌?,node.js,security,express,csrf,Node.js,Security,Express,Csrf,据我所知,有两种方法可以防止CSRF攻击:1)每个会话使用令牌,2)每个请求使用令牌 1) 在第一种情况下,当初始化用户会话时,仅生成一次CSRF令牌。因此,用户一次只有一个有效令牌 2) 在第二种情况下,每个请求都会生成新的CSRF令牌,之后旧的CSRF令牌将失效。 这使得利用该漏洞更加困难,因为即使攻击者窃取令牌(通过XSS),当用户转到下一页时,令牌也会过期。 但另一方面,这种方法使webapp的可用性降低。下面是一段很好的引语: 例如,如果他们点击“后退”按钮并提交带有新值的表单,提交将
谢谢你,对不起我的英语 CSRF令牌是nonce。它们应该只使用一次(或在长时间后安全使用)。它们用于识别和授权请求。让我们考虑防止CSRF的两种方法:
顺便说一下,如果您想使用多个令牌,您现在有OAuth2库 谢谢你的回答,我真的很感激。但它没有描述多个有效令牌比单个有效令牌有什么优势。