Django 3.2.1 版本发行说明¶
2021 年 5 月 4 日
Django 3.2.1 修复了 3.2 中的一个安全问题和几个漏洞。
CVE-2021-31542:通过上传的文件进行潜在的目录遍历¶
MultiPartParser
、UploadedFile
和 FieldFile
允许通过上传的文件和适当制作的文件名进行目录遍历。
为了降低这种风险,现在应用了更严格的基名和路径预防。
漏洞修复¶
纠正了在 Windows 上对 GDAL 3.2 的检测(#32544)。
修正了 Django 3.2 中的一个漏洞,
DEFAULT_AUTO_FIELD
配置无法使用BigAutoField
和SmallAutoField
的子类(#32620)。修正了 Django 3.2 中的一个缺陷,当在
QuerySet.union()
、intersection()
和difference()
之后使用一个无注解字段进行排序的QuerySet.values()/values_list()
会发生崩溃(#32627)。恢复了,在 Django 3.2 中的缺陷,在技术 404 调试页面显示异常消息(#32637)。
修正了 Django 3.2 中的一个漏洞,即在
CheckConstraint.check
或UniqueConstraint.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 中开始出现,是由于一个使用
Exists
来exclude()
多值关系的单独修正(#32650)。修正了 Django 3.2 中的一个漏洞,即在渲染某些管理模板时记录了变量查询错误(#32681)。
在 Django 3.2 中修复了一个 bug,该 bug 导致在删除针对多值关系进行过滤的对象时,管理员 changelist 会崩溃 (#32682)。管理员 changelist 现在使用
Exists()
而不是QuerySet.distinct()
,因为在 Django 3.2 中不允许在distinct()
后调用delete()
,以解决数据丢失的可能性。修正了 Django 3.2 中的一个缺陷,即在 PostgreSQL 上调用进程环境不会被传递给
dbshell
命令(#32687)。修正了 Django 3.2 中使用子查询构建复杂过滤器时的性能缺陷(#32632)。作为一个副作用,删除了检查
django.db.sql.query.Query
相等的私有 API。