Примечания к выпуску Django 3.0.1¶
Декабрь 18, 2019
Django 3.0.1 исправляет проблему безопасности и несколько ошибок в версии 3.0.
CVE-2019-19844: Потенциальный взлом учетной записи через форму сброса пароля¶
Предоставив соответствующим образом составленный адрес электронной почты, использующий символы Unicode, который при сравнении совпадает с существующим адресом электронной почты пользователя, когда он приведен к нижнему регистру для сравнения, злоумышленник может получить токен сброса пароля для соответствующей учетной записи.
Чтобы избежать этой уязвимости, запросы на сброс пароля теперь сравнивают отправленный email с помощью более строгого, рекомендованного алгоритма сравнения двух идентификаторов без учета регистра из Unicode Technical Report 36, section 2.11.2(B)(2). В случае совпадения письмо, содержащее маркер сброса, будет отправлено на зарегистрированный адрес электронной почты, а не на отправленный адрес.
Исправления¶
- Исправлена регрессия в Django 3.0, восстановлена возможность использования Django внутри Jupyter и других сред, принудительно использующих асинхронный контекст, путем добавления возможности отключения механизма Асинхронная безопасность с помощью переменной окружения
DJANGO_ALLOW_ASYNC_UNSAFE
(#31056). - Исправлена регрессия в Django 3.0, когда
RegexPattern
, используемаяre_path()
, возвращала позиционные аргументы для передачи в представление, когда все необязательные именованные группы отсутствовали (#31061). - Разрешено, после регрессии в Django 3.0, использовать выражения
Window
в условиях вне фильтров queryset, например, в условияхWhen
(#31060). - Исправлена возможность потери данных в
SplitArrayField
. При использовании сArrayField(BooleanField())
все значения после первого значенияTrue
помечались как проверенные вместо сохранения пройденных значений (#31073).