Django 3.2.1 版本发行说明

2021 年 5 月 4 日

Django 3.2.1 修复了 3.2 中的一个安全问题和几个漏洞。

CVE-2021-31542:通过上传的文件进行潜在的目录遍历

MultiPartParserUploadedFileFieldFile 允许通过上传的文件和适当制作的文件名进行目录遍历。

为了降低这种风险,现在应用了更严格的基名和路径预防。

漏洞修复

  • 纠正了在 Windows 上对 GDAL 3.2 的检测(#32544)。
  • 修正了 Django 3.2 中的一个漏洞,DEFAULT_AUTO_FIELD 配置无法使用 BigAutoFieldSmallAutoField 的子类(#32620)。
  • 修正了 Django 3.2 中的一个缺陷,当在 QuerySet.union()intersection()difference() 之后使用一个无注解字段进行排序的 QuerySet.values()/values_list() 会发生崩溃(#32627)。
  • 恢复了,在 Django 3.2 中的缺陷,在技术 404 调试页面显示异常消息(#32637)。
  • 修正了 Django 3.2 中的一个漏洞,即在 CheckConstraint.checkUniqueConstraint.condition 中反向查询一对一关系时,系统检查会崩溃(#32635)。
  • 修正了 Django 3.2 中的一个缺陷,当搜索时带不平衡引号的短语时,会导致 ModelAdmin.search_fields 崩溃(#32649)。
  • 修正了 Django 3.2 中的一个漏洞,即如果没有定义候补变量,变量查找错误会被记录在站点地图模板上(#32648)。
  • 修正了 Django 3.2 中的一个缺陷,当组合包含布尔表达式(#32548)的 Q() 对象时导致崩溃的问题。
  • 修正了 Django 3.2 中的一个缺陷,该缺陷导致 QuerySet.update() 在 MySQL 和 MariaDB 按继承或连接字段排序的查询集上崩溃(#32645)。
  • 修正了 Django 3.2 中的一个缺陷,当解码由 django.contrib.messages.storage.CookieStorage 使用的 Django 3.2 之前格式的 cookie 值时,导致崩溃(#32643)。
  • 修正了 Django 3.2 中的一个缺陷,该缺陷使 shift 键修改器无法在管理更新列表中选择多行(#32647)。
  • 修正了 Django 3.2 中的一个bug,即系统检查会在 STATICFILES_DIRS 配置中出现 (prefix, path) 的二元元组列表时崩溃(#32665)。
  • 修正了一个长期存在的漏洞,涉及到与子查询一起使用时的查询集按位组合,该漏洞在 Django 3.2 中开始出现,是由于一个使用 Existsexclude() 多值关系的单独修正(#32650)。
  • 修正了 Django 3.2 中的一个漏洞,即在渲染某些管理模板时记录了变量查询错误(#32681)。
  • 修正了 Django 3.2 中的一个漏洞,即当删除针对多值关系过滤的对象时,管理变更列表会崩溃(#32682)。管理变更列表现在使用 Exists(),而不是 QuerySet.distinct(),因为 Django 3.2 不允许在 distinct() 之后调用 delete(),以解决数据丢失的可能性。
  • 修正了 Django 3.2 中的一个缺陷,即在 PostgreSQL 上调用进程环境不会被传递给 dbshell 命令(#32687)。
  • 修正了 Django 3.2 中使用子查询构建复杂过滤器时的性能缺陷(#32632)。作为一个副作用,删除了检查 django.db.sql.query.Query 相等的私有 API。