Django 1.3.4 发行说明 — Django 文档

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

Django 1.3.4 发行说明

2012 年 10 月 17 日

这是 Django 1.3 系列的第四个版本。

主机头中毒

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

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