October 4, 2023
Django 4.2.6修复了一个严重程度为“中等”的安全问题和4.2.5中的几个错误。
django.utils.text.Truncator
¶在修复之后 CVE-2019-14232 的实现中使用的正则表达式 django.utils.text.Truncator
%s chars()
和 words()
方法(与 html=True
)进行了修订和改进。但是,这些正则表达式仍然表现出线性回溯复杂性,因此,当给定一个非常长的、可能格式错误的HTML输入时,计算仍然会很慢,从而导致潜在的拒绝服务漏洞。
这个 chars()
和 words()
方法用于实现 truncatechars_html
和 truncatewords_html
模板过滤器,因此也很容易受到攻击。
由处理的输入 Truncator
在HTML模式下运行时,被限制为前500万个字符,以避免潜在的性能和内存问题。
修复了Django 4.2.5中的一个回归,其中覆盖了过时的 DEFAULT_FILE_STORAGE
和 STATICFILES_STORAGE
测试中的设置导致了主要 STORAGES
变异,变异 (#34821 )。
修复了Django 4.2中导致不必要的基于字符串的字段强制转换的回归 (CharField
, EmailField
, TextField
, CICharField
, CIEmailField
,以及 CITextField
)与 __isnull
在PostgreSQL上查找。因此,使用 __isnull
查询规划器不会使用在Django 4.2之前创建的表达式或条件,从而导致性能回归 (#34840 )。
您可能需要使用Django 4.2到4.2.5重新创建在数据库中创建的此类索引,因为它们包含不必要的内容 ::text
选角。使用此查询查找候选索引:
SELECT indexname, indexdef
FROM pg_indexes
WHERE indexdef LIKE '%::text IS %NULL';
12月 18, 2023