2018 年 3 月 6 日
Django 2.0.3 修复了 2.0.2 版本中的两个安全问题和一些错误。此外,还整合了来自 Transifex 的最新字符串翻译。
urlize
和 urlizetrunc
模板过滤器中的拒绝服务可能性问题¶django.utils.html.urlize()
函数在处理某些输入时非常慢,这是由于两个正则表达式中的灾难性回溯漏洞引起的。urlize()
函数用于实现 urlize
和 urlizetrunc
模板过滤器,因此这两个过滤器也存在漏洞。
问题正则表达式被替换为具有相似行为的解析逻辑。
truncatechars_html
和 truncatewords_html
模板过滤器中存在拒绝服务可能性问题。¶如果给 django.utils.text.Truncator
的 chars()
和 words()
方法传递了 html=True
参数,由于正则表达式中的灾难性回溯漏洞,它们在处理某些输入时非常慢。chars()
和 words()
方法用于实现 truncatechars_html
和 truncatewords_html
模板过滤器,因此这两个过滤器也存在漏洞。
正则表达式中的回溯问题已经修复。
已修复一个回归问题,该问题导致切片的 QuerySet.distinct().order_by()
后跟 count()
会导致崩溃(#29108)。
优先考虑了在泰国区域设置下没有 %f
的日期时间和时间输入格式,以修复管理员时间选择器小部件显示 "undefined" 的问题(#29109)。
已修复使用 QuerySet.order_by(Exists(...))
时的崩溃问题(#29118)。
使 Q.deconstruct()
在多个关键字参数的情况下具有确定性(#29125)。您可能需要修改现有迁移中的 Q
,或者接受一个自动生成的迁移。
已修复一个回归问题,其中带有列表参数的 When()
表达式会导致崩溃(#29166)。
已修复在子查询中使用 Window()
表达式时的崩溃问题(#29172)。
已修复 AbstractBaseUser.normalize_username()
在 username
参数不是字符串时的崩溃问题(#29176)。
5月 02, 2025