在 Pyramid 会话对象上调用 new_csrf_token() 方法是否会使先前发布的令牌无效?

Does calling the new_csrf_token() method on a Pyramid session object invalidate previously issued tokens?

使用 Pyramid web 框架,当在会话对象上调用 new_csrf_token() 方法时,它是否会使先前发出的 CSRF 令牌失效?

例如:

old_token = session.get_csrf_token()
new_token = session.new_csrf_token()
# Is old_token still valid for requests?

在 Pyramid 的会话对象之一上调用 new_csrf_token() 方法将使该会话之前发布的所有 CSRF 令牌失效。

Pyramid 的 ISession 接口只定义了两个处理 CSRF 令牌的方法,get_csrf_token()new_csrf_token()。此时框架的session接口不允许多个CSRF token同时存在。 (这忽略了带有签名 cookie 的奇怪边缘情况,这不应该影响 CSRF 保护的安全性。)

在内部,Pyramid 在请求的会话对象上调用 get_csrf_token() 方法,然后将返回值与请求中收到的令牌进行比较。

假设任何使用旧 CSRF 保护令牌的请求都会失败。