Django 1.4.4 发行说明 — Django 文档
Django 1.4.4 发行说明
2013 年 2 月 19 日
Django 1.4.4 修复了 1.4 系列之前 Django 版本中存在的四个安全问题,以及其他几个错误和大量文档改进。
这是 Django 1.4 系列中的第四个错误修复/安全版本。
主机头中毒
Django 的某些部分——独立于最终用户编写的应用程序——使用完整的 URL,包括从 HTTP 主机头生成的域名。 一段时间以来,Django 的文档中包含一些注释,建议用户如何配置 Web 服务器以确保只有有效的 Host 标头才能到达 Django 应用程序。 然而,据我们报告,即使采用推荐的 Web 服务器配置,仍有一些技术可用于欺骗许多常见的 Web 服务器向应用程序提供不正确且可能是恶意的 Host 标头。
为此,Django 1.4.4 添加了一个新设置 ALLOWED_HOSTS
,其中包含此站点的有效主机/域名的明确列表。 如果 request.get_host()
被调用,一个 Host 标头与此列表中的条目不匹配的请求将引发 SuspiciousOperation
。 有关完整的详细信息,请参阅 :setting:`ALLOWED_HOSTS` 设置的文档。
Django 1.4.4 中此设置的默认值是 ['*']
(匹配任何主机),以实现向后兼容性,但我们强烈建议所有站点设置更严格的值。
当 DEBUG
为 True
或运行测试时,将禁用此主机验证。
XML 反序列化
Python 标准库中的 XML 解析器容易受到通过外部实体和实体扩展的多种攻击。 Django 使用这个解析器来反序列化 XML 格式的数据库装置。 此解串器不打算用于不受信任的数据,但为了在 Django 1.4.4 中安全起见,XML 解串器拒绝使用 DTD(DOCTYPE 定义)解析 XML 文档,从而关闭了这些攻击途径。
Python 标准库中的这些问题是 CVE-2013-1664 和 CVE-2013-1665。 更多信息 来自 Python 安全团队 。
Django 的 XML 序列化器不会创建带有 DTD 的文档,因此这不会导致从 dumpdata
到 loaddata
的典型往返出现任何问题,但是如果您将自己的 XML 文档提供给 [ X201X] 管理命令,您需要确保它们不包含 DTD。
表单集内存耗尽
以前版本的 Django 没有验证或限制客户端在表单集的管理表单中提供的表单计数数据,这使得通过强制服务器创建大量表单来耗尽服务器的可用内存成为可能。
在 Django 1.4.4 中,所有表单集都有严格执行的最大表单数(默认为 1000,但可以通过 max_num
表单集工厂参数设置更高)。
管理员历史查看信息泄露
在以前的 Django 版本中,对模型没有更改权限的管理员用户仍然可以通过他们的管理员历史日志查看实例的 Unicode 表示。 Django 1.4.4 现在将对象的管理历史日志视图限制为对该模型具有更改权限的用户。
其他错误修正和更改
- 防止事务状态从一个请求泄漏到下一个请求 (#19707)。
- 将 SQL 命令语法更改为与 MySQL 4 兼容 (#19702)。
- 添加了与旧的未加盐 MD5 密码的向后兼容性 (#18144)。
- 许多文档改进和修复。