Django 2.2.4发布说明

August 1, 2019

Django 2.2.4修复了2.2.3中的安全问题和几个错误。

UTE-2019-14232:拒绝服务的可能性 django.utils.text.Truncator

如果 django.utils.text.Truncator %s chars()words() 方法已通过 html=True 争论说,由于正规表达中存在灾难性的回溯漏洞,他们评估某些输入的速度极其缓慢。的 chars()words() 方法用于实现 truncatechars_htmltruncatewords_html 模板过滤器,因此很容易受到攻击。

使用的正规表达式 Truncator 已被简化,以避免潜在的回溯问题。因此,尾随标点符号现在有时可能会被包括在截断的输出中。

UTE-2019-14233:拒绝服务的可能性 strip_tags()

由于底层的行为 HTMLParserdjango.utils.html.strip_tags() 评估包含大量嵌套不完整HTML实体序列的某些输入将极其缓慢。的 strip_tags() 方法用于实现相应的 striptags 模板过滤器,因此也很脆弱。

strip_tags() 现在避免了对 HTMLParser 当删除标签(但必然是不完整的HTML实体)的进展停止时。

请记住,绝对不提供有关结果的保证 strip_tags() HTML安全。因此,永远不要将结果标记为安全 strip_tags() 调用而不先逸出它,例如 django.utils.html.escape()

UTE-2019-14234:键和索引查找中SQL注入的可能性 JSONField/HStoreField

Key and index lookupsdjango.contrib.postgres.fields.JSONFieldkey lookupsHStoreField 使用精心设计的字典进行SQL注入,并进行字典扩展,作为 **kwargs 已传递给 QuerySet.filter()

UTE-2019-14235:潜在的记忆耗尽 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上的迁移崩溃 contains 查找上 DateRangeFieldDateTimeRangeField ,如果某个运算式的右侧是相同类型 (#30621 )。

  • 修复了Django 2.2中的回归,如果文件路径包含空字符,则自动重载程序崩溃 ('\x00' ) (#30506 )。

  • 修复了Django 2.2中的回归,如果翻译目录无法解析,自动重新加载器就会崩溃 (#30647 )。