2019 年 8 月 1 日
Django 2.2.4 修复了 Django 2.2.3 中的安全问题和若干个错误。
django.utils.text.Truncator 中存在拒绝服务可能性问题。¶如果 django.utils.text.Truncator 的 chars() 和 words() 方法传递了 html=True 参数,它们在处理某些输入时非常慢,这是由于正则表达式中的灾难性回溯漏洞引起的。chars() 和 words() 方法用于实现 truncatechars_html 和 truncatewords_html 模板过滤器,因此这两个过滤器也存在漏洞。
为了避免潜在的回溯问题,Truncator 使用的正则表达式已经简化。因此,尾部的标点符号可能会有时包含在截断后的输出中。
JSONField/HStoreField 的键和索引查找中存在 SQL 注入可能性。¶django.contrib.postgres.fields.JSONField 的 键和索引查找,以及 HStoreField 的 键查找,都受到了 SQL 注入的影响,使用适当构造的字典,并将其作为传递给 QuerySet.filter() 的 **kwargs 进行字典扩展。
django.utils.encoding.uri_to_iri() 中存在潜在的内存耗尽问题。¶如果传递了特定的输入,django.utils.encoding.uri_to_iri() 在重新百分号编码无效的 UTF-8 八位序列时可能会导致显着的内存使用,因为它会发生过多的递归。
现在,uri_to_iri() 在重新百分号编码无效的 UTF-8 八位序列时避免了递归。
修复了 Django 2.2 中的一个回归问题,当对一个包含多次出现的字段类型的 QuerySet.union(), intersection() 或 difference() 进行排序时,会导致使用错误的排序方式 (#30628)。
修复了在 PostgreSQL 上进行迁移时的崩溃问题,当在 DateRangeField 或 DateTimeRangeField 上添加具有 contains 查找的检查约束时,如果表达式的右侧是相同类型的话 (#30621)。
修复了 Django 2.2 中的一个回归问题,如果文件路径包含空字符('\x00'),自动重新加载器会崩溃的问题 (#30506)。
修复了 Django 2.2 中的一个回归问题,如果无法解析翻译目录,自动重新加载器会崩溃的问题 (#30647)。
8月 13, 2025