Примечания к выпуску 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поиск ключевых преобразований для JSONFieldMariaDB, 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 ).

Copyright ©2021 All rights reserved