问题标签 [django-csrf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
24622 浏览

python - @csrf_exempt 在 Django 1.4 中停止工作

我有以下代码,在 Django 1.2.5 中运行良好:

但是当我升级到 Django 1.4 时,我开始收到 403 禁止,并显示“CSRF 验证失败”消息。

为什么 @csrf_exempt 装饰器不起作用?

网址定义为:

0 投票
1 回答
16640 浏览

django - Django - 禁止(未设置 CSRF cookie。)

我有一个中等流量的 Django 网站(每天大约 4000/5000 次访问)。今天我在settings.py上配置了“LOGGING”选项来发送一封带有“Info”级别的邮件,只要检查是否一切正常...

令我惊讶的是,我收到以下错误:[Django] WARNING (EXTERNAL IP): Forbidden (CSRF cookie not set.)

我试图重现这个错误,但我不能。我在 Firefox 和 Chrome 上进行了测试,清理了所有 cookie ......一切都很好。但是我收到这个错误十几次,总是使用不同的 IP,所以我想这不是攻击......我所有的表单都有{% csrf_token %}django.middleware.csrf.CsrfViewMiddleware配置在 MIDDLEWARE_CLASSES .

上面的日志信息很清楚CSRF_COOKIE不是空的。我正在使用 Django 1.4。

[更新] 我认为这些用户没有启用 cookie ......所以......问题是:如何将 CSRF 与没有启用 cookie 的用户一起使用?

0 投票
13 回答
102957 浏览

python - CSRF 验证失败。请求中止

我尝试建立一个非常简单的网站,可以将数据添加到 sqlite3 数据库中。我有一个带有两个文本输入的 POST 表单。

索引.html:

表格.py:

视图.py:

但是,当我单击“提交”按钮时,出现 403 错误:

我已包含{% csrf_token %}在 index.html 中。但是,如果是 RequestContext 问题,我真的不知道在哪里以及如何使用它。我希望一切都发生在同一页面上(index.html)。

0 投票
1 回答
6087 浏览

jquery - 带有ajax和django post的csrf

使用 jquery1.7.1 和 django1.3 ,我试图通过 ajax 发出一个发布请求,在我在网上找到的一些教程代码中

url "/create/" 映射到 django 视图

当我单击触发 javascript 函数的提交按钮时create_note,我收到 403 错误。应该是csrf的问题。。

我试图通过修改 ready 函数来解决这个问题

但它没有用..我仍然得到403 error

所以,我尝试修改ajax调用中的数据

仍然会导致403错误..

请告诉我应该做些什么来纠正这个问题..我看到了 关于这个的django 文档,但我很困惑如何使用它。我应该将整个jQuery(document).ajaxSend(...代码复制到我的 javascript 文件中..我在这里真的很困惑。 .

0 投票
6 回答
68411 浏览

django - 如何在 Django、csrf 令牌和 POST 请求中使用 curl

我正在使用 curl 来测试我的 Django 表单之一。我尝试过的调用(每个都有错误,为了便于阅读,多行):

(1):

(带有 http 标头和csrftokencookie)导致 400 错误,没有返回数据。

(2):

(如 (1) 中,但在 header 属性声明中没有空格,并且sessionid在 cookie 中也有)导致相同的 400 错误,没有返回数据。

(3):

(只有带有 的 http 标头X-CSRFToken,没有 cookie)导致错误代码 403,并显示消息:CSRF cookie not set。

如何使用 curl 测试我的表单?除了 cookie 值和 http 标头之外,我没有考虑哪些因素?

0 投票
8 回答
58644 浏览

django - POST 方法总是返回 403 Forbidden

我已阅读Django - CSRF 验证失败以及与 django 和 POST 方法相关的几个问题(和答案)。对我来说最好但不工作的答案之一是https://stackoverflow.com/a/4707639/755319

所有批准的答案都至少表明了三件事:

  1. 使用 RequestContext 作为 render_to_response_call 的第三个参数
  2. 使用 POST 方法在每个表单中添加 {% csrf_token %}
  3. 检查 settings.py 中的 MIDDLEWARE_CLASSES

我完全按照建议做了,但错误仍然出现。我使用 django 1.3.1(来自 ubuntu 12.04 存储库)和 python 2.7(默认来自 ubuntu)

这是我的观点:

这是我的模板(search_form.html):

我重启了服务器,但是403禁止错误仍然存​​在,告诉CSRF验证失败。

我有两个问题:

  1. 如何修复此错误?
  2. 为什么在 django 中做一个“POST”这么难,我的意思是有什么具体的理由让它如此冗长(我来自 PHP,以前从未发现过这样的问题)?
0 投票
1 回答
775 浏览

django - Nginx Django csrf_token 获取 502 错误无效标头

我有一个使用 Pinax 开发的 Django 站点。当我在 apache+mod_wsgi 中部署它时,它工作正常。但是当我在 nginx+uwsgi 中部署它时,它几乎可以正常工作,但是页面包含一个{% csrf_token %}标签。崩溃的页面不会显示 Django 错误页面,而是显示 Nginx 502 错误页面。Nginx 错误日志是:

2012/06/08 09:11:59 [错误] 30224#0: *79 上游从上游读取响应标头时发送了无效标头,客户端:211.142.12.3,服务器:mysite.com,请求:“GET /discuss/ HTTP /1.1”,上游:“uwsgi://127.0.0.1:9001”,主机:“mysite.com”,引用者:“http://mysite.com/”

uwsgi 显示:

{地址空间使用:42319872 字节/40MB} {rss 使用:22573056 字节/21MB} [pid: 21398|app: 0|req: 1/3] 110.178.82.221 () {42 vars in 988 bytes} [Fri Jun 8 18:27:01 2012] GET /discuss/ => 在 2306 毫秒内生成 31139 个字节(HTTP/1.1 200) 358 个字节中的 5 个标头(1 个在核心 0 上切换)

错误发生在 GET 请求上,而不是 POST 请求上。我对此进行了测试-当我csrf_token从模板中删除令牌时,就可以了。因此,令牌和错误之间必须存在关系,而不是其他任何东西。

这是怎么回事?

0 投票
2 回答
1930 浏览

django - 在不需要身份验证的页面中包含“CSRF 令牌”是否存在安全风险?

我有一个 Django 站点,它使用 Django 的 csrf-token 来防止 csrf 攻击。公众可以访问其中一种表格,包括未登录的人。

Csrf Token 应该提供对跨域请求的保护。

编辑:(引用我的评论)“但是,如果在不需要授权的情况下允许发布请求,csrf 并不比一个琐碎的垃圾邮件过滤器更好(验证码在这里会做得更好)。事实上,这应该是一个安全风险在不需要身份验证的页面中包含 CSRF 令牌(例如 30 分钟后过期)。(但我的网站正在这样做,这就是我首先发表这篇文章的原因)”

此外,在这种情况下,可以在浏览器 js 控制台中获取该页面,通过某些特定的 xpath 获取 csrf 令牌,然后使用该 csrf 发布一些任意数据。此外,步骤很容易重现,可以为该站点或任何 Django 站点设计特定的攻击,因为您每次都会找到除“csrfmiddlewaretoken”之外的 csrf 令牌(包括 reddit、pinterest 等网站)。

据我所知,除了让它有点困难之外,csrf 令牌并没有太大帮助。

我错过了它的一个方面吗?我的实施错了吗?如果我是对的,让你的 csrf 令牌在你的 html 源代码中飞来飞去(尤其是那些不需要任何身份验证的)是愚蠢的吗?

0 投票
2 回答
3133 浏览

python - CSRF 令牌丢失或不正确,即使我有 {% csrf_token %} 但我使用 HttpResponse

表单.html

和 views.py 我使用 HttpResponse 而不是 render_to_response

如果使用 render_to_response,我只添加 RequestContext 但 HttpResponse,我不知道该怎么做。

我使用 Django 1.4
我的问题在哪里

==========================

当我更改呈现 HTML 的函数时,我的问题得到了解决:

这是一个愚蠢的错误...谢谢...

0 投票
1 回答
1988 浏览

ajax - Django:相对 url 不适用于 ajax 中的 post 调用

我正在尝试将相对 url 与 post ajax 调用一起使用,如下所示:

当前网址路径:

我需要更改为不同的目录。

对于我的 get 调用,绝对和相对 url,返回数据。

但是对于 POST 调用,当我使用相对 url 时,我得到内部服务器错误。(绝对 URL 工作正常)我认为它与 CSRF 无关,因为在我看来,我还包括 @csrf_exempt 用于测试目的。(我在请求中包含了https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax )

chrome 调试器在 post call 中使用相对 URL 给我以下错误消息。

但是,正如您所看到的,它确实为我提供了我想要访问的完整 url 链接。当我直接点击链接时,我得到了页面的数据。

视图非常简单:

任何机构都有任何建议,为什么相对 url 路径在 POST 调用中失败?提前致谢..