【问题标题】:Questions on Django's CSRF protection关于 Django 的 CSRF 保护问题
【发布时间】:2011-08-29 07:31:08
【问题描述】:

文档有解释here,但我还有一些其他问题..

为什么需要专用的 CSRF cookie?

如果 Django 不使用特定于事务的随机数,为什么不只要求在 POST 请求正文中嵌入会话 ID?

为什么 CSRF 随机数应该绑定到会话 ID? Django 会这样做吗?

This webpage 似乎暗示 CSRF nonce 需要绑定到会话 ID(例如 CSRF nonce = keyed hash of session ID)。这是为什么? Django 是否将其 CSRF 随机数绑定到会话 ID?

为什么 Django 使用独立于会话的 nonce 而不是事务特定的 nonce?

是因为性能问题吗?直觉上,交易特定的随机数似乎本质上更安全。

【问题讨论】:

    标签: django security csrf


    【解决方案1】:

    CSRF 保护和会话具有不同的性质,因此将它们放在单个 cookie 中会使其更难维护。

    这里有一些区别:

    1. 您可以在不使用会话的情况下使用 CSRF 保护。
    2. 您可能希望在会话开始之前使用 CSRF(即,由于性能原因,您不想在用户登录之前开始会话,但您希望使用 CSRF 保护您的联系表单)。
    3. 有时您想删除会话 cookie,但可能永远不会删除 CSRF。
    4. 单个浏览器会话需要 CSRF 保护(直到您关闭浏览器),但会话可能会持续数周。
    5. 您可能希望拥有跨域会话,但可能永远不需要跨域 CSRF。

    【讨论】:

      【解决方案2】:
      1. CSRF 是一种用于 Web 应用的身份验证令牌。
      2. 用于防止 CSRF 攻击。
      3. 不使用会话也可以使用基于 CSRF 令牌的 身份验证系统。

      有关 CSRF 的更多信息,请阅读以下链接。 https://docs.djangoproject.com/en/3.2/ref/csrf/

      【讨论】:

        猜你喜欢
        • 2011-10-07
        • 2020-04-14
        • 2012-06-28
        • 1970-01-01
        • 2012-03-26
        • 2019-07-14
        • 2011-05-14
        • 2012-05-27
        • 1970-01-01
        相关资源
        最近更新 更多