django - 关于 Django 的 CSRF 保护问题

标签 django security csrf

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

为什么需要专用的 CSRF cookie?

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

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

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

为什么 Django 使用独立于 session 的随机数而不是特定于事务的随机数?

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

最佳答案

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

以下是一些区别:

  • 您可以在不使用 session 的情况下使用 CSRF 保护。
  • 您可能希望在 session 开始之前使用 CSRF(即,由于性能原因,您不想在用户登录之前启动 session ,但您希望使用 CSRF 保护您的联系表)。
  • 有时您想删除 session cookie,但可能永远不会删除 CSRF。
  • 单个浏览器 session 需要 CSRF 保护(直到您关闭浏览器),但 session 可能会持续数周。
  • 您可能想要跨域 session ,但可能永远不需要跨域 CSRF。
  • 关于django - 关于 Django 的 CSRF 保护问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066404/

    相关文章:

    security - 如何防止直接浏览 Web 目录中的图像?

    .net - 不使用证书保护 WCF WebService

    ajax - 如何使用 express.js 在 Ajax 调用中实现 CSRF 保护(寻找完整示例)?

    c++ - 将 Windows 商店中的私钥转换为 PEM(用于 OpenSSL)

    javascript - 通过跨域 JavaScript 调用防止 CSRF

    python - 使用外部 POST 请求绕过 Django CSRF 保护

    Django 模板语法错误

    python - Django:简化 View

    Python 多处理和 Django - 我很困惑

    Django 1.7 makemigration 挂