Django - 如何在公共页面上执行 CSFR?或者,更好的是,应该如何使用它?

oro*_*aki 5 security django csrf django-csrf

读完后: http: //docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-to-use-it

我得出的结论是,除非您信任使用该页面的人,否则使用它是无效的。它是否正确?

我想我真的不明白什么时候可以安全地使用它,因为这个声明:

对于针对外部 URL 的 POST 表单,不应执行此操作,因为这会导致 CSRF 令牌泄露,从而导致漏洞。

令人困惑的原因是;对我来说,“外部 URL”将是不属于我的域的页面(即,我拥有 www.example.com 并放置一个发布到 www.spamfoo.com 的表单。显然情况并非如此因为人们不会使用 Django 来生成发布到其他人网站的表单,但是你怎么可能不能在公共表单(例如登录表单)上使用 CSRF 保护呢?

Bri*_*uft 0

很抱歉不了解您困惑的具体根源,我想说您应该问的问题是何时不使用 CSRF 保护。您已经从文档中调用了此案例:

对于针对外部 URL 的 POST 表单,不应执行此操作,因为这会导致 CSRF 令牌泄露,从而导致漏洞。

如果您将表单发布到您的域,您将希望默认启用 CSRF 保护,除非您有特定原因禁用它(这种情况应该比较罕见)。