Django 1.10.3 发行说明 — Django 文档

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

Django 1.10.3 版本发行说明

2016 年 11 月 1 日

Django 1.10.3 修复了 1.10.2 中的两个安全问题和几个漏洞。

在 Oracle 上运行测试时创建的具有硬编码密码的用户

使用 Oracle 数据库运行测试时,Django 创建一个临时数据库用户。 在旧版本中,如果未在数据库设置 TEST 字典中手动指定密码,则使用硬编码密码。 这可能允许具有数据库服务器网络访问权限的攻击者进行连接。

该用户通常在测试套件完成后被删除,但在使用 manage.py test --keepdb 选项或用户具有活动会话(例如攻击者的连接)时不会被删除。

现在每次测试运行都使用随机生成的密码。


DEBUG=True 时的 DNS 重新绑定漏洞

settings.DEBUG=True 时,旧版本的 Django 不会根据 settings.ALLOWED_HOSTS 验证 Host 标头。 这使它们容易受到 DNS 重新绑定攻击

虽然 Django 没有提供允许远程代码执行的模块,但这至少是一个跨站点脚本向量,如果开发人员在开发中加载生产数据库的副本或连接到一些生产服务,这可能会非常严重例如,没有开发实例。 如果一个项目使用像 django-debug-toolbar 这样的包,那么攻击者可以执行任意 SQL,如果开发人员使用超级用户帐户连接到数据库,这可能尤其糟糕。

settings.ALLOWED_HOSTS 现在生效,与 DEBUG 无关。 为方便起见,如果 ALLOWED_HOSTS 为空且 DEBUG=True,则允许以下 localhost 变体 ['localhost', '127.0.0.1', '::1']。 如果您的本地设置文件具有您的生产 ALLOWED_HOSTS 值,您现在必须省略它以获取这些后备值。


漏洞修复

  • 允许 User.is_authenticatedUser.is_anonymous 属性测试 set 成员资格(:ticket:`27309`)。
  • 修复了在具有 RenameModel 操作 (:ticket:`27279`) 的项目中运行 migrate 时的性能回归。
  • model_name 添加到 makemigrations 中的 allow_migrate() 调用 (:ticket:`27200`)。
  • 使 JavaScriptCatalog 视图尊重 packages 参数; 以前它被忽略 (:ticket:`27374`)。
  • 修复了 PostgreSQL 上的 QuerySet.bulk_create(),当对象数量是 batch_size 的倍数加 1 (:ticket:`27385`)。
  • 防止 i18n_patterns() 使用过多的 URL 作为语言来修复 prefix_default_language=False 的用例 (:ticket:`27063`)。
  • SuspiciousOperation 在并发请求中销毁会话时替换了 SessionMiddleware 中可能不正确的重定向,以指示请求无法完成(:ticket:`27363`[ X191X])。