Примечания к выпуску 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). - Исправлено обнаружение асинхронного вызова
get_responseв различных встроенных промежуточных программах (#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).