Примечания к выпуску Django 3.1.1¶
Сентябрь 1, 2020
Django 3.1.1 исправляет две проблемы безопасности и несколько ошибок в версии 3.1.
CVE-2020-24583: Неверные разрешения на каталоги промежуточного уровня на Python 3.7+¶
В Python 3.7+ режим FILE_UPLOAD_DIRECTORY_PERMISSIONS
не применялся к каталогам промежуточного уровня, созданным в процессе загрузки файлов, и к собранным статическим каталогам промежуточного уровня при использовании команды управления collectstatic
.
Вы должны проверить и вручную исправить разрешения для существующих каталогов промежуточного уровня.
CVE-2020-24584: Повышение прав доступа в каталогах промежуточного уровня в кэше файловой системы на Python 3.7+¶
В Python 3.7+ каталоги промежуточного уровня кэша файловой системы имели стандартный umask системы, а не 0o077
(без групповых и прочих разрешений).
Исправления¶
- Исправлена обертка переведенных ярлыков действий в боковой панели навигации администратора для восточноазиатских языков (#31853).
- Исправлена обертка длинных названий моделей в боковой панели навигации администратора (#31854).
- Исправлено кодирование данных сессии при обновлении нескольких экземпляров одного проекта до Django 3.1 (#31864).
- Скорректирован шаблон боковой панели навигации администратора для уменьшения отладочных логов при рендеринге (#31865).
- Исправлена возможность потери данных в аргументе
select_for_update()
. При использовании связанных полей, указывающих на прокси-модель в аргументеof
, соответствующая модель не блокировалась (#31866). - Исправлена возможность потери данных, следующая за регрессией в Django 2.0, при копировании экземпляров модели с кэшированным значением полей (#31863).
- Исправлена регрессия в Django 3.1, которая приводила к сбою при декодировании недопустимых данных сессии (#31895).
- Исправлена ошибка в Django 3.1, которая приводила к сбою при передаче аргументов с устаревшими ключевыми словами в кверисет в
TemplateView.get_context_data()
(#31877). - Обеспечение чувствительности к потоку для хуков
MiddlewareMixin.process_request()
иprocess_response()
в асинхронном контексте (#31905). - Исправлен поиск
__in
при преобразовании ключей дляJSONField
с MariaDB, MySQL, Oracle и SQLite (#31936). - Исправлена ошибка в Django 3.1, которая приводила к ошибкам разрешения в
CommonPasswordValidator
иsettings.py
, генерируемых командойstartproject
, когда пользователь не имел прав на все промежуточные каталоги в пути установки Django (#31912). - Исправлено обнаружение async
get_response
callable в различных встроенных промежуточных программах (#31928). - Исправлено падение
QuerySet.order_by()
на PostgreSQL при упорядочивании и группировке поJSONField
с пользовательскимdecoder
(#31956). Как следствие, выборкаJSONField
с помощью необработанного SQL теперь возвращает строку вместо предварительно загруженных данных. В таких случаях необходимо явно вызыватьjson.loads()
. - Исправлено падение
QuerySet.delete()
на MySQL, после регрессии производительности в Django 3.1 на MariaDB 10.3.2+, при фильтрации по агрегатной функции (#31965). - Исправлена ошибка
django.contrib.admin.EmptyFieldListFilter
при использовании на обратных отношениях (#31952). - Предотвращение переполнения содержимого в представлении списка изменений в админке при включенной боковой панели навигации (#31901).