13

我们可以更改每个表单请求甚至每个请求的 CSRF 令牌,而不是一个活动会话的相同令牌吗?

4

3 回答 3

34

假设您有权访问该request对象:

from django.middleware.csrf import rotate_token
rotate_token(request)
于 2013-12-01T01:29:15.960 回答
9

在 csrf 中间件中,他们做这样的事情,覆盖 cookie 集:

request.META["CSRF_COOKIE"] = _get_new_csrf_key()

您可以_get_new_csrf_key()通过from django.middleware.csrf import _get_new_csrf_key(). 由于这是一种私人方法,我建议不要使用这样的黑客攻击。

于 2012-09-27T07:04:10.063 回答
3

如果你想在中间件中使用它:

from django.middleware.csrf import rotate_token

class CSRFRefresh(object):
    def process_response(self, request, response):
        rotate_token(request)
        return response
于 2016-12-14T13:17:20.217 回答