Примечания к выпуску Django 3.1.1

September 1, 2020

Django 3.1.1 fixes two security issues and several bugs in 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).
  • Reverted a deprecation in Django 3.1 that caused a crash when passing deprecated keyword arguments to a queryset in 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).
  • Исправлено обнаружение асинхронного вызова get_response в различных встроенных промежуточных программах (#31928).
  • Fixed a QuerySet.order_by() crash on PostgreSQL when ordering and grouping by JSONField with a custom decoder (#31956). As a consequence, fetching a JSONField with raw SQL now returns a string instead of preloaded data. You will need to explicitly call json.loads() in such cases.
  • Исправлено падение QuerySet.delete() на MySQL, после регрессии производительности в Django 3.1 на MariaDB 10.3.2+, при фильтрации по агрегатной функции (#31965).
  • Исправлена ошибка django.contrib.admin.EmptyFieldListFilter при использовании на обратных отношениях (#31952).
  • Предотвращение переполнения содержимого в представлении списка изменений администратора при включенной боковой панели навигации (#31901).
Вернуться на верх