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