Django 2.0.3发行说明

2018年3月6日

Django2.0.3修复了2.0.2中的两个安全问题和几个错误。此外,还合并了Transifex的最新字符串翻译。

CVE-2018-7536:拒绝服务的可能性 urlizeurlizetrunc 模板筛选器

这个 django.utils.html.urlize() 由于两个正则表达式中存在灾难性的回溯漏洞,函数在评估某些输入时非常缓慢。这个 urlize() 函数用于实现 urlizeurlizetrunc 模板过滤器,因此容易受到攻击。

有问题的正则表达式被行为类似的解析逻辑所取代。

CVE-2018-7537:拒绝服务的可能性 truncatechars_htmltruncatewords_html 模板筛选器

如果 django.utils.text.Truncatorchars()words() 方法已通过 html=True 理由是,由于正则表达式中存在灾难性的回溯漏洞,它们在评估某些输入时非常慢。这个 chars()words() 方法用于实现 truncatechars_htmltruncatewords_html 模板过滤器,因此容易受到攻击。

正则表达式中的回溯问题是固定的。

错误修正

  • 修正了导致切片的回归 QuerySet.distinct().order_by() 然后 count() 撞车 (#29108

  • 将日期时间和时间输入格式的优先级设置为 %f 用于修复显示“未定义”的管理时间选择器小部件的泰语区域设置 (#29109

  • 固定撞车 QuerySet.order_by(Exists(...)) (#29118

  • 制造 Q.deconstruct() 具有多个关键字参数的确定性 (#29125 )您可能需要修改 Q 在现有迁移中,或接受自动生成的迁移。

  • 修正了一个回归式,其中 When() 带有列表参数的表达式崩溃 (#29166

  • 修复了使用 Window() 子查询中的表达式 (#29172

  • 固定的 AbstractBaseUser.normalize_username() 如果崩溃 username 参数不是字符串 (#29176