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