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