关于Django的CSRF保护的问题

发布于 2024-11-08 21:30:48 字数 537 浏览 3 评论 0原文

该文档在此处有一个解释,但我还有一些其他问题。 .

为什么需要专用的 CSRF cookie?

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

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

此网页似乎暗示 CSRF 随机数需要绑定到会话 ID(例如,CSRF 随机数 = 会话 ID 的密钥哈希)。这是为什么? Django 是否将其 CSRF 随机数绑定到会话 ID?

为什么 Django 使用与会话无关的随机数而不是特定于事务的随机数?

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

The documentation has an explanation here, but I had some additional questions..

Why is a dedicated CSRF cookie necessary?

If Django does not use transaction specific nonces, why not just require to embed the session ID inside the POST request body?

Why should CSRF nonces be bind to session ID? Does Django do this?

This webpage seem to imply that CSRF nonce needs to be bound to the session ID (e.g. CSRF nonce = keyed hash of session ID). Why is that? Does Django bind its CSRF nonce to session ID?

Why does Django use session independent nonce and not transaction specific nonces?

Is it because of performance concern? Intuitively transaction specific nonces seem to be more secure by nature.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一抹苦笑 2024-11-15 21:30:48

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

以下是一些区别:

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

CSRF protection and session have different nature, so putting those in single cookie would make it harder to maintain.

Here are some differences:

  1. You can use CSRF protection without using sessions.
  2. You may want to use CSRF before session started (ie. you don't want to start session before user logged in, because of performance, but you want to protect your contact form with CSRF).
  3. Sometimes you want to delete session cookie, but probably never CSRF.
  4. CSRF protection is needed for single browser session (until you close browser), but sessions may continue for even weeks.
  5. You may want to have cross-domain session, but probably never need cross-domain CSRF.
岁月静好 2024-11-15 21:30:48
  1. CSRF 是一种用于 Web 应用程序的身份验证令牌。
  2. 它用于防止 CSRF 攻击。
  3. 不使用会话,您也可以使用基于 CSRF 令牌的
    认证系统。

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

  1. CSRF is a kind of authentication token for your web apps.
  2. It is used to prevent CSRF attacks.
  3. Without using sessions also you can make use of CSRF token-based
    authentication system.

For more information about CSRF read the following link.
https://docs.djangoproject.com/en/3.2/ref/csrf/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文