Django 1.4.2发行说明

2012年10月17日

这是Django1.4系列中的第二个安全版本。

主机头中毒

django的某些部分(独立于最终用户编写的应用程序)使用完整的URL,包括从HTTP主机头生成的域名。针对这一点的一些攻击超出了Django的控制能力,并要求正确配置Web服务器;Django的文档在一段时间内包含了建议用户进行此类配置的注释。

然而,正如最近向我们报告的那样,Django自己对主机标头的内置解析仍然存在漏洞。Django 1.3.3和Django 1.4.1中的主机头解析--具体地说, django.http.HttpRequest.get_host() --错误地处理标头中的用户名/密码信息。因此,例如,当在上运行时,Django将接受以下主机标头 validsite.com

Host: validsite.com:random@evilsite.com

使用这种方法,攻击者可以使django的某些部分(尤其是密码重置机制)生成并向用户显示任意的URL。

为了解决这个问题,在 HttpRequest.get_host() 正在修改;包含潜在危险内容(如用户名/密码对)的主机头现在引发异常 django.core.exceptions.SuspiciousOperation .

此问题的详细信息最初作为 security advisory .

向后不兼容的更改

  • 新引进的 GenericIPAddressField 已对构造函数参数进行了调整,以匹配所有其他模型字段的参数。前两个关键字参数现在是详细的名称和名称。

其他错误修复和更改

  • 子类htmlparser仅适用于适当的python版本(18239)。

  • 将batch_-size参数添加到qs.bulk_create()(17788)。

  • 修正了管理过滤器中的一个小回归,其中错误格式化的日期作为url参数传递会导致未处理的validationError(18530)。

  • 修复了在模板中访问权限时出现的无限循环错误(18979)

  • 修复了一些Python2.5兼容性问题

  • 修复了内容处置标题中带引号的文件名的问题(19006)

  • 使上下文选项位于 transblocktrans 标签接受单引号(18881)包装的文字。

  • 大量文档改进和修复。