Примечания к выпуску Django 2.0.3¶
Март 6, 2018
Django 2.0.3 исправляет две проблемы безопасности и несколько ошибок в 2.0.2. Также включены последние переводы строк от Transifex.
CVE-2018-7536: Возможность отказа в обслуживании в фильтрах шаблонов urlize
и urlizetrunc
¶
Функция django.utils.html.urlize()
крайне медленно оценивала определенные входные данные из-за катастрофической уязвимости обратного отката в двух регулярных выражениях. Функция urlize()
используется для реализации фильтров шаблонов urlize
и urlizetrunc
, которые, таким образом, были уязвимы.
Проблемные регулярные выражения заменяются логикой разбора, которая ведет себя аналогично.
CVE-2018-7537: Возможность отказа в обслуживании в фильтрах шаблонов truncatechars_html
и truncatewords_html
¶
Если методам django.utils.text.Truncator
chars()
и words()
передавался аргумент html=True
, они крайне медленно оценивали определенные входные данные из-за катастрофической уязвимости обратного хода в регулярном выражении. Методы chars()
и words()
используются для реализации шаблонных фильтров truncatechars_html
и truncatewords_html
, которые, таким образом, были уязвимы.
Исправлена проблема отката в регулярном выражении.
Исправления¶
- Исправлена регрессия, из-за которой нарезка
QuerySet.distinct().order_by()
с последующимcount()
приводила к сбою (#29108). - Приоритет форматов ввода даты и времени без
%f
для тайской локали, чтобы исправить виджет выбора времени в админке, отображающий «undefined» (#29109). - Исправлен сбой при
QuerySet.order_by(Exists(...))
(#29118). - Сделали
Q.deconstruct()
детерминированным с несколькими ключевыми аргументами (#29125). Вам может понадобиться изменитьQ
в существующих миграциях или принять автогенерируемую миграцию. - Исправлена регрессия, в которой при использовании выражения
When()
с аргументом в виде списка происходил сбой (#29166). - Исправлен сбой при использовании выражения
Window()
в подзапросе (#29172). - Исправлено падение
AbstractBaseUser.normalize_username()
, если аргументusername
не является строкой (#29176).