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

亚当·C

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

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

保罗·麦克米兰

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

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

Django的CSRF实现不同于其他许多将CSRF信息与会话信息一起存储在服务器上的实现[1]。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验证失败。请求中止。-未设置CSRF 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

为什么浏览器允许CSRF?

来自分类Dev

Django CSRF cookie设置不正确

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Django REST Framework Forbidden CSRF cookie 未设置

来自分类Dev

获取 Set-Cookie 标头以设置 CSRF Cookie 时避免 HTTP 403 错误的最佳方法

来自分类Dev

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

来自分类Dev

更改 Django 的 cookie 域设置将如何导致偶发的 CSRF 失败?

来自分类Dev

如何在 django 1.11 中使用 cookie csrf?

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

    Django 1.6中CSRF令牌Cookie的问题

  4. 4

    Django CSRF_COOKIE_DOMAIN-如何正常更改

  5. 5

    polymer-cookie生成重复的Django csrf cookie

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

    JWT + Cookie + HTTPS + CSRF

  13. 13

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

  14. 14

    为什么浏览器允许CSRF?

  15. 15

    Django CSRF cookie设置不正确

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

    Django REST Framework Forbidden CSRF cookie 未设置

  26. 26

    获取 Set-Cookie 标头以设置 CSRF Cookie 时避免 HTTP 403 错误的最佳方法

  27. 27

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

  28. 28

    更改 Django 的 cookie 域设置将如何导致偶发的 CSRF 失败?

  29. 29

    如何在 django 1.11 中使用 cookie csrf?

热门标签

归档