Примечания к выпуску 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).
Вернуться на верх