Django CSRF Cookie-为什么它不会在浏览器关闭时过期?

亚当·C

Django允许您指定会话在浏览器关闭时到期(对Chrome有一些警告)。它为什么不对CSRF cookie进行处理?

我之所以问是因为,在我看来,CSRF令牌很容易被泄漏(例如,错误地将其放入外部站点的帖子中),这将对此有所缓解。我误会了吗?

保罗·麦克米兰

我将从Carl链接的开发人员列表中重新发布我的答案,以便stackoverflow也拥有它:

如果将Cookie设置为在浏览器关闭时到期,则对于以下用户而言,这将导致CSRF错误:关闭浏览器(或将页面上带有表单的页面添加为书签),然后从浏览器缓存中加载该页面并提交表单。我对此用例是否值得支持(例如,在移动设备上可能很重要)持矛盾态度,但我不认为将Cookie设置为在浏览器关闭时过期会为原本配置正确的网站带来很大的安全利益(HTTPS,HSTS等)。

Django的CSRF实现与许多其他[CS]实现不同,后者将CSRF信息与会话信息一起存储在服务器上。CSRF机制通过将以形式提供的令牌与作为浏览器中的cookie提供的令牌进行匹配而起作用。如果您将Cookie设置为“ zzz”,它仍然可以正常运行。安全性来自以下事实:攻击者无法设置cookie,而不是它恰好包含任何特定的加密值。

如果担心的是攻击者可以在会话之间访问用户的物理计算机并窃取CSRF令牌,则将其设置为在浏览器关闭时到期不会阻止攻击者插入已知值的cookie,该cookie将在下一个会话中使用。我不相信我们可以保护攻击者已经物理访问过其计算机的用户的令牌。

不过,如果可以令人信服地证明将cookie设置为在浏览器关闭时到期不会破坏现有用例(我主要关注移动浏览器),那么我愿意更改默认行为。如果任何非恶意用户可以通过无辜行为触发CSRF警告,则通常将其视为错误。

[1] Django的CSRF实现通常会在大多数笔测试器工具中引发各种错误警报,因为它的工作方式与其他实现方式不完全相同,并且与会话cookie无关。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django CSRF Cookie-为什么它在浏览器关闭时不过期?

来自分类Dev

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

来自分类Dev

Django CSRF验证失败。请求中止。-未设置CSRF cookie

来自分类Dev

Django不会删除Cookie

来自分类Dev

Django 1.6中CSRF令牌Cookie的问题

来自分类Dev

Django CSRF_COOKIE_DOMAIN-如何正常更改

来自分类Dev

polymer-cookie生成重复的Django csrf cookie

来自分类Dev

在第三方网站上的iframe中访问时,未为子域设置Django csrf cookie

来自分类Dev

在浏览器关闭时使ASPXAUTH Cookie过期

来自分类Dev

尽管Firebug说“ cookie”标签下有一个csrftoken,但Django的CSRF验证仍失败。为什么?

来自分类Dev

当浏览器关闭时,PHP会话Cookie会过期

来自分类Dev

使用CSRF_COOKIE_HTTPONLY = True将角形形式提交到Django后端

来自分类Dev

使用AngularJs发布请求时未设置CSRF Cookie-Django后端

来自分类Dev

JWT + Cookie + HTTPS + CSRF

来自分类Dev

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

来自分类Dev

Django CSRF cookie设置不正确

来自分类Dev

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

来自分类Dev

即使格式为403,也不会设置禁止CSRF cookie

来自分类Dev

python Django REST Framework CSRF失败:未设置CSRF cookie?

来自分类Dev

Django CSRF验证失败。请求中止。-未设置CSRF cookie

来自分类Dev

Django返回403错误-“未设置CSRF Cookie”

来自分类Dev

尽管Firebug说“ cookie”标签下有一个csrftoken,但Django的CSRF验证仍失败。为什么?

来自分类Dev

如果存在以方括号“ [”开头的cookie值,则Django CSRF cookie未设置错误

来自分类Dev

在codeigniter中使用csrf和jquery cookie登录时出错

来自分类Dev

Django REST Framework Forbidden CSRF cookie 未设置

来自分类Dev

Cookie 不会在所有浏览器中过期/删除

来自分类Dev

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

来自分类Dev

如何在 django 1.11 中使用 cookie csrf?

来自分类Dev

Flask 会话 cookie 不会在浏览器关闭时持续存在

Related 相关文章

  1. 1

    Django CSRF Cookie-为什么它在浏览器关闭时不过期?

  2. 2

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

  3. 3

    Django CSRF验证失败。请求中止。-未设置CSRF cookie

  4. 4

    Django不会删除Cookie

  5. 5

    Django 1.6中CSRF令牌Cookie的问题

  6. 6

    Django CSRF_COOKIE_DOMAIN-如何正常更改

  7. 7

    polymer-cookie生成重复的Django csrf cookie

  8. 8

    在第三方网站上的iframe中访问时,未为子域设置Django csrf cookie

  9. 9

    在浏览器关闭时使ASPXAUTH Cookie过期

  10. 10

    尽管Firebug说“ cookie”标签下有一个csrftoken,但Django的CSRF验证仍失败。为什么?

  11. 11

    当浏览器关闭时,PHP会话Cookie会过期

  12. 12

    使用CSRF_COOKIE_HTTPONLY = True将角形形式提交到Django后端

  13. 13

    使用AngularJs发布请求时未设置CSRF Cookie-Django后端

  14. 14

    JWT + Cookie + HTTPS + CSRF

  15. 15

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

  16. 16

    Django CSRF cookie设置不正确

  17. 17

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

  18. 18

    即使格式为403,也不会设置禁止CSRF cookie

  19. 19

    python Django REST Framework CSRF失败:未设置CSRF cookie?

  20. 20

    Django CSRF验证失败。请求中止。-未设置CSRF cookie

  21. 21

    Django返回403错误-“未设置CSRF Cookie”

  22. 22

    尽管Firebug说“ cookie”标签下有一个csrftoken,但Django的CSRF验证仍失败。为什么?

  23. 23

    如果存在以方括号“ [”开头的cookie值,则Django CSRF cookie未设置错误

  24. 24

    在codeigniter中使用csrf和jquery cookie登录时出错

  25. 25

    Django REST Framework Forbidden CSRF cookie 未设置

  26. 26

    Cookie 不会在所有浏览器中过期/删除

  27. 27

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

  28. 28

    如何在 django 1.11 中使用 cookie csrf?

  29. 29

    Flask 会话 cookie 不会在浏览器关闭时持续存在

热门标签

归档