Django 1.3.4 release notes

2012年10月17日

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

Host header poisoning

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

Django自己内置的解析的主机头,然而,仍然是脆弱的,最近报告我们。Django 1.3.3和Django 1.4.1中的主机头解析 - 特别是django.http.HttpRequest.get_host() - 在标题中不正确地处理用户名/密码信息。因此,例如,当在“validsite.com”上运行时,Django将接受以下Host标头:

Host: validsite.com:[email protected]

使用这个,攻击者可以导致Django的部分 - 特别是密码重置机制 - 生成和显示任意URL给用户。

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

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