Django 5.0.8发布说明

August 6, 2024

Django 5.0.8修复了三个严重性为“中度”的安全问题,一个严重性为“高度”的安全问题,以及5.0.7中的几个bug。

UTE-2024-41989:记忆耗尽 django.utils.numberformat.floatformat()

如果 floatformat 收到指数大的科学计数法中数字的字符串表示,可能会导致大量内存消耗。

为了避免这种情况,超过200位的小数现在按原样返回。

UTE-2024-41990:中的潜在拒绝服务漏洞 django.utils.html.urlize()

urlizeurlizetrunc 通过具有特定字符序列的非常大的输入而受到潜在的拒绝服务攻击。

UTE-2024-41991:中的潜在拒绝服务漏洞 django.utils.html.urlize()AdminURLFieldWidget

urlize , urlizetrunc ,而且 AdminURLFieldWidget 通过某些具有大量Unicode字符的输入,会受到潜在的拒绝服务攻击。

UTE-2024-42005:潜在的SQL注入 QuerySet.values()values_list()

QuerySet.values()values_list() 模型上的方法 JSONField 在列别名中受到SQL注入,通过精心制作的JSON对象键作为传递的 *arg .

错误修正

  • Added missing validation for UniqueConstraint(nulls_distinct=False) when using *expressions (#35594).

  • 修复了Django 5.0中的回归,其中 ModelAdmin.action_checkbox 当使用渲染模型实例时,可能会破坏管理更改表HTML页面 __html__ 方法 (#35606 )。

  • 修复了使用创建模型时的崩溃 Field.db_defaultMeta.constraints 约束由以下组成 __endswith , __startswith ,或者 __contains 查找 (#35625 ).

  • 修复了Django 5.0.7中的一个回归,该回归导致了 LocaleMiddleware 当处理超过500个字符的语言代码时 (#35627 ).

  • Fixed a bug in Django 5.0 that caused a system check crash when ModelAdmin.date_hierarchy was a GeneratedField with an output_field of DateField or DateTimeField (#35628).

  • Fixed a bug in Django 5.0 which caused constraint validation to either crash or incorrectly raise validation errors for constraints referring to fields using Field.db_default (#35638).

  • 修复了Django 5.0中保存包含 FileFielddb_default 设置 (#35657 ).