Django 1.4.2 发行说明 — Django 文档

来自菜鸟教程
Django/docs/3.1.x/releases/1.4.2
跳转至:导航、​搜索

Django 1.4.2 发行说明

2012 年 10 月 17 日

这是 Django 1.4 系列中的第二个安全版本。

主机头中毒

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

然而,正如最近向我们报告的那样,Django 自己内置的 Host 标头解析仍然容易受到攻击。 Django 1.3.3 和 Django 1.4.1 中的 Host 标头解析 - 特别是 django.http.HttpRequest.get_host() - 错误地处理了标头中的用户名/密码信息。 因此,例如,在“validsite.com”上运行时,Django 将接受以下 Host 标头:

Host: validsite.com:random@evilsite.com

使用它,攻击者可以导致 Django 的某些部分——尤其是密码重置机制——生成并向用户显示任意 URL。

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

此问题的详细信息最初作为 安全公告 发布在网上。


向后不兼容的更改

  • 新引入的 GenericIPAddressField 构造函数参数已经过调整以匹配所有其他模型字段的参数。 前两个关键字参数现在是verbose_name 和name。


其他错误修正和更改

  • 子类 HTMLParser 仅适用于适当的 Python 版本 (#18239)。
  • 将 batch_size 参数添加到 qs.bulk_create() (#17788)。
  • 修复了管理过滤器中的一个小回归,其中格式错误的日期作为 url 参数传递导致未处理的 ValidationError (#18530)。
  • 修复了访问模板中的权限时的无限循环错误 (#18979)
  • 修复了一些 Python 2.5 兼容性问题
  • 修复了 Content-Disposition 标头中引用文件名的问题 (#19006)
  • 使 transblocktrans 标签中的上下文选项接受用单引号括起来的文字 (#18881)。
  • 许多文档改进和修复。