Django 1.3.4发行说明

2012年10月17日

这是Django1.3系列中的第四个版本。

主机头中毒

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 .