Django 1.6中CSRF令牌Cookie的问题

史考特

在最新版本中,我们一直在Django中遇到重复CSRF令牌cookie的问题。我们刚刚从Django 1.4升级到1.6,而在1.4中再也没有任何问题。基本上,每个用户的一切都可以开始,但是在某些时候,他们最终会拥有多个CSRF令牌cookie,浏览器会感到困惑,并且不知道要使用哪个。它通常选择错误,并导致CSRF故障问题。我们的网站使用多个子域,因此通常有一个cookie用于.site.com,.sub.site.com,site.com和其他变体。

我们尝试将“ CSRF_COOKIE_DOMAIN”设置为.site.com,这似乎使该问题发生的频率降低了,但是当使用子域并且用户注销并以其他用户身份重新登录时,该问题仍然偶尔发生。

我们还发现,在我们的基本模板中未定义favicon快捷方式,从而导致了一个额外的请求通过中间件,但这是固定的。然后,我们确认只有真正的请求正在通过中间件,而没有任何静态或媒体文件。

我们仍然无法在命令中重现该问题,通常每当确实发生此问题时,清除cookie即可作为临时解决方案,但仍会定期发生。有谁知道为什么会这样?我们在文档中缺少什么?

谢谢。

编辑:

我忘记提及的一件事是,我们有多个服务器环境(site.com,demo.site.com和beta.site.com)。经过多一点的挖掘,看起来正在测试Beta然后使用过的产品的用户遇到了跨环境Cookie冲突。刚才我们尝试将每个环境的csrf cookie域设置为“ .beta.site.com”和“ .demo.site.com”,而不仅仅是“ .site.com”,这似乎很有用,尤其是当您清除自己的在每种环境下工作之间的cookie。但是,在生产中的.site.com Cookies之间仍然有可能在beta和demo中发生冲突,但这至少不是一个大问题。

那么,我们还有什么可以做的吗?此外,当用户将旧的“ site.com” cookie与新的指定“ .site.com” cookie发生冲突时,一旦将其推送到生产环境,我们还能做些什么?

编辑2:

我已经发布了解决方案,但是几天后我还是不能接受。

史考特

我想我们终于明白了。每个环境(“ .beta.site.com”,“。demo.site.com”等)的单独“ CSRF_COOKIE_DOMAIN”停止了跨环境问题。我们还最终将“ CSRF_COOKIE_NAME”设置为“ csrf_token”,而不是默认的“ csrftoken”,这样,使用旧的csrftoken cookie的用户就不会受到负面影响。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Django中测试CSRF令牌

来自分类Dev

Struts 1中的CSRF令牌实现

来自分类Dev

Django 1.9 AJAX表单CSRF令牌403错误-“未设置CSRF Cookie”

来自分类Dev

Django CSRF问题

来自分类Dev

CSRF令牌只是在Django中随机触发

来自分类Dev

在Django中测试POST端点时如何包含csrf令牌?

来自分类Dev

无法在javascript提取中设置Django X-CSRF令牌

来自分类Dev

django,在静态页面中的表单上设置csrf令牌

来自分类Dev

CSRF令牌丢失或在Django中不正确

来自分类Dev

注册表单中缺少 Django CSRF 令牌

来自分类Dev

CSRF令牌丢失或无效的Django

来自分类Dev

未在多个浏览器中设置Django CSRF cookie

来自分类Dev

在 Angular 中获取并插入 Django 设置的 CSRF cookie 的值

来自分类Dev

测试Django中的ForeignKey的重复条目“ 1”

来自分类Dev

“ CSRF失败:CSRF令牌丢失或不正确。” 在Django Rest中:UpdateModelMixin

来自分类常见问题

Django CSRF令牌+ Angular.js

来自分类Dev

Django CSRF令牌丢失或错误错误

来自分类Dev

Django拒绝请求的CSRF令牌

来自分类Dev

使用Django使用Javascript生成CSRF令牌

来自分类Dev

使用Django使用Javascript生成CSRF令牌

来自分类Dev

Django Rest Framework CSRF令牌失败

来自分类Dev

Django仅以表格形式提交csrf令牌?

来自分类Dev

Django CSRF cookie设置不正确

来自分类Dev

Django:禁止(未设置CSRF cookie。)

来自分类Dev

在PHP中没有cookie的CSRF令牌

来自分类Dev

每个存储库的GitHub问题ID从1开始,如何在Django中复制它?

来自分类Dev

每个存储库的GitHub问题ID从1开始,如何在Django中复制它?

来自分类Dev

此类型错误的问题:save() 缺少 1 个必需的位置参数:pycharm django 中的“self”

来自分类Dev

Django 中的 Cookie 行为

Related 相关文章

热门标签

归档