Django 1.11.23发行说明

2019年8月1日

Django 1.11.23修复了1.11.22中的安全问题。

CVE-2019-14232: django.utils.text.Truncator

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

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

CVE-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() .

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

Key and index lookupsdjango.contrib.postgres.fields.JSONFieldkey lookupsHStoreField 都受到SQL注入的影响,使用适当构造的字典,并进行字典扩展,因为 **kwargs 已传递给 QuerySet.filter()

CVE-2019-14235: django.utils.encoding.uri_to_iri()

如果通过某些输入, django.utils.encoding.uri_to_iri() 当对无效的UTF-8八位字节序列重新编码时,由于过度递归,可能会导致大量内存使用。

uri_to_iri() 现在避免了对无效的UTF-8八位字节序列进行重新编码时的递归。