【问题标题】:django, set csrf token on form in static pagesdjango,在静态页面的表单上设置 csrf 令牌
【发布时间】:2014-08-22 03:49:01
【问题描述】:

我有点困惑。 csrf 令牌在 django 模板中设置

带标签:

{{csrf_token}}

但是,我的应用是 Cordova 应用,这意味着没有从服务器加载任何内容。 这些页面是从设备的内存中获取的。

在这种情况下如何获取 csrf_token?

我想创建一个视图,我将使用 ajax 调用它,它将简单地将 csrf_token 字符串返回给调用者。

你是这样做的吗?这会破坏 csrf_token 的安全性吗? 也许有更好的解决方案?

如果该解决方案是正确的,请告诉您如何从请求中获取 csrf 令牌。

所以只是以稍微不同的方式重申这个问题:我需要从静态页面提交表单。但是,当我这样做时,我会收到 csrf 错误。

如何提交表单而不出现 csrf 错误?

提前致谢。

【问题讨论】:

    标签: android django cordova django-views csrf


    【解决方案1】:

    我认为 sligodave 链接到了正确的文档,但不是 Django 中描述的确切过程,您需要做一个额外的步骤或获取 csrf。如果您使用ensure_csrf_token 为自己创建一个可以从中获取 cookie 的视图,则可以使用 JS 获取并解析该 cookie,然后转身在您的 POST 上使用它。由于请求在同一个域上,因此传递它应该没有任何问题。我会在安全堆栈上遵从this answer 的意见,说这种做法没有先天的安全漏洞。

    【讨论】:

      【解决方案2】:

      我认为你想要的可以使用一点 javascript 来实现。

      https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/#ajax

      您从 cookie 中获取 csrf 令牌并将其设置为响应的标头,或者您在表单上设置 csrf 字段。

      编辑:没关系,我错过了您问题的“静态”部分。它从不通过 django,所以没有 csrf cookie。我去拿我的外套!

      【讨论】:

        猜你喜欢
        • 2020-05-29
        • 2016-06-22
        • 2016-05-16
        • 2011-12-11
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        • 2018-04-10
        相关资源
        最近更新 更多