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

时间:2017-03-03 18:21:40

标签: python session csrf pyramid csrf-protection

使用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?

1 个答案:

答案 0 :(得分:2)

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

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

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

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