Примечания к выпуску Django 4.2.1¶
3 мая 2023 г.
В Django 4.2.1 исправлена проблема безопасности со степенью серьезности «низкая» и несколько ошибок в версии 4.2.
CVE-2023-31047: потенциальный обход проверки при загрузке нескольких файлов через одно поле формы¶
Загрузка нескольких файлов с помощью одного поля формы никогда не поддерживалась в forms.FileField или forms.ImageField, так как проверялся только последний загруженный файл. К сожалению, тема Загрузка нескольких файлов в Django предполагала обратное.
Для того чтобы избежать уязвимости, виджеты форм ClearableFileInput и FileInput теперь поднимают ValueError при установке на них HTML-атрибута multiple. Чтобы предотвратить исключение и сохранить старое поведение, установите allow_multiple_selected в значение True.
Подробнее об использовании нового атрибута и работе с несколькими файлами через одно поле см. в разделе Загрузка нескольких файлов в Django.
Исправления¶
- Исправлена регрессия в Django 4.2, приводившая к аварийному завершению работы
QuerySet.defer()при откладывании полей по именам атрибутов (#34458). - Исправлена регрессия в Django 4.2, приводившая к аварийному завершению работы функции
SearchVectorс символами%(#34459). - Исправлена ошибка в Django 4.2, из-за которой агрегация по запросам, использующим явную группировку, группировалась по неправильным столбцам (#34464).
- Разрешена, после регрессии в Django 4.2, установка опции
"cursor_factory"вOPTIONSна PostgreSQL (#34466). - Принудительное использование кодировки UTF-8 в PostgreSQL после регрессии в Django 4.2 (#34470).
- В Django 4.2 исправлена регрессия, при которой
i18n_patterns()не уважал аргументprefix_default_language, когда использовался fallback-язык из языка по умолчанию (#34455). - В Django 4.2 исправлена регрессия, при которой переведенные URL-адреса языка по умолчанию из
i18n_patterns()сprefix_default_language, установленным вFalse, вызывали 404 ошибку для запроса с другим языком (#34515). - В Django 4.2 исправлена ошибка, из-за которой создание копий и глубоких копий
HttpRequest,HttpResponseи их подклассов (#34482, #34484) не всегда работало корректно. - В Django 4.2 исправлена ошибка, из-за которой шаблонные фильтры
timesinceиtimeuntilвозвращали некорректные результаты для datetime с часовым поясом не UTC, когда разница во времени составляла менее 1 дня (#34483). - Исправлена регрессия в Django 4.2, приводившая к аварийному завершению работы функции
SearchHeadlineприpsycopg3 (#34486). - Исправлена регрессия в Django 4.2, приводившая к некорректному отображению полей
ClearableFileInputв админке (#34506). - В Django 4.2 исправлена ошибка, из-за которой хлебные крошки не отображались в индексных представлениях приложений администратора сайта (#34512).
- Сделано сокращение операций сквоширования миграций
AddIndex,RemoveIndex,RenameIndexиCreateModel, что позволяет убрать из исторических миграций устаревшую опциюMeta.index_togetherи использовать вместо нееMeta.indexes(#34525).