Django 1.1.4 版本发布说明:新特性与升级指南
创始人
2026-04-30 20:55:24
0

Django 1.1.4 版本发行说明

欢迎来到 Django 1.1.4 版本!

这是 Django 1.1 系列的第四个“错误修复”版本,改进了 Django 1.1 代码库的稳定性和性能。

除了一个例外,Django 1.1.4 与 Django 1.1.3 兼容。它还包含了一些修复和其他改进。对于当前使用或目标为 Django 1.1 的任何开发或部署,推荐升级到 Django 1.1.4 。

有关 1.1 分支中新功能、向后不兼容性和已弃用功能的详细信息,请参阅 Django 1.1 版本发行说明

不向后兼容的变更

AJAX 请求的 CSRF 例外

Django 包含一个 CSRF 保护机制,它通过在传出的表单中插入一个令牌来实现。然后,中间件在表单提交时检查令牌的存在,并对其进行验证。

在 Django 1.2.5 之前,我们的 CSRF 保护对 AJAX 请求做了一个例外,基于以下原因:

  • 许多 AJAX 工具包在使用 XMLHttpRequest 时会添加一个 X-Requested -With 头部。

  • 浏览器对于 XMLHttpRequest 具有严格的同源策略。

  • 在浏览器的上下文中,只有使用 XMLHttpRequest 才能添加这种自定义头部。

因此,为了方便使用,我们基于 X-Requested-With 头部,对看起来是 AJAX 请求的请求没有应用 CSRF 检查。 Ruby on Rails Web 框架也有类似的例外情况。

最近,Google 的工程师向 Ruby on Rails 开发团队的成员们提醒了一种结合浏览器插件和重定向的技术,可以允许攻击者在向任何网站发出请求时提供自定义的 HTTP 头信息。这可以使伪造的请求看起来像是 AJAX 请求,从而破坏了 CSRF 保护机制,因为它信任 AJAX 请求具有同源性质。

Rails 团队的 Michael Koziarski 向我们提出了这个问题,我们能够制作出一个概念验证,证明了 Django 的 CSRF 处理也存在同样的漏洞。

为了解决这个问题,Django 现在将对所有请求应用完整的 CSRF 验证,无论它们看起来是否来自 AJAX 。从技术上讲,这是不兼容的,但在这种情况下,安全风险被认为超过了兼容性问题。

此外,Django 现在将接受自定义 HTTP 头 X-CSRFTOKEN 中的 CSRF 令牌,以及表单提交本身中的令牌,以便与流行的 JavaScript 工具包一起使用,这些工具包允许在所有 AJAX 请求中插入自定义头。这样做是为了方便使用。

请参阅 CSRF 文档中的示例 jQuery 代码,该代码演示了这个技巧,确保您查看的是适用于您的 Django 版本的文档,因为一些较旧版本的 Django 需要不同的确切代码。

相关内容

热门资讯

玻璃硬盘原理图 玻璃硬盘原理 玻璃硬盘,又称为磁头悬浮硬盘(Magnetic Head Flying Disk,MHFD),是一种...
闲鱼搜索规则与技巧 闲鱼最新特... 在闲鱼这个二手交易平台上,有很多用户都希望能够找到一些特殊的东西,比如一些罕见的收藏品、独特的手工艺...
家里监控最长能保存多少天的记录... 家里监控一般保存多久 随着科技的发展,家庭监控系统已经成为了许多家庭的必备设备,它不仅可以帮助我们...
华为tag有用吗 华为tag-... 华为Tag是华为手机中的一种功能,它可以帮助用户更好地管理自己的手机数据和应用,通过使用华为Tag,...
ps5手柄可用手机快充充电吗 ... PS5手柄,即PlayStation 5的DualSense手柄,是索尼公司为PlayStation...
QQ音乐提示代理模式可能无法正... QQ音乐提示代理模式可能无法正常访问,如上图所示,是怎么回事呢? 这个可能和你的网络设置有关系,首先...
收到微信有提示音怎么去掉 微信... 微信收到信息没有提示音,可能是由多种原因导致的,以下是一些可能的原因及解决方法: 1. 手机静音或...
a100显卡对应的cuda版本 在进行GPU加速的编程中,CUDA是常用的架构和平台,其版本和显卡型号之间存在着一定的对应关系。本篇...
别人打电话听不见我说话怎么回事... 当我们在使用手机时,可能会遇到别人打电话过来听不见声音的情况,这种情况可能是由多种原因导致的,下面我...
苹果手机非通讯录电话打不进来 ... 手机电话打不进来可能有多种原因,以下是一些常见的问题及解决方法: 1. **信号问题**: ...