Django CSRF_COOKIE_DOMAIN - 如何优雅地改变

Kry*_*ski 6 django cookies django-csrf

我有一个使用CSRF保护的公共Django站点.

我没有设置CSRF_COOKIE_DOMAIN.我的网站使用子域名.

有时,用户最终会csrftoken设置cookie .toplevel.com以及开启sub.toplevel.com.这会导致问题,因为如果在检查中使用了错误的cookie,CSRF检查将失败.

我想设置一个CSRF_COOKIE_DOMAIN.toplevel.com.但是,我还想删除csrftoken任何子*.toplevel.com域的任何cookie .我该怎么做?

如果我不删除其他cookie,我将最终在最初的情况下,在不同的域上有两个具有相同名称的cookie,这会导致问题.

leh*_*ins 9

我遇到了类似的问题.我处理它的方式是与CSRF_COOKIE_DOMAIN我一起改变了CSRF_COOKIE_NAME,使旧的"csrftoken"饼干过时了.

  • 这是非常正确的,如果在执行GET的人之间进行此更改,然后立即发出POST请求,则会失败.如果网站上的用户不多,这是一个非常不可能的情况,但如果确实存在一个大问题(例如,如果有数千个并发用户),可以通过暂时覆盖`django.middleware.csrf.CsrfViewMiddleware来处理它. `并在`process_view`方法中检查两个cookie名称. (3认同)