Примечания к выпуску Django 2.0.2

1 февраля 2018 года

Django 2.0.2 исправляет проблему безопасности и несколько ошибок в 2.0.1.

CVE-2018-6188: Утечка информации в AuthenticationForm

Регрессия в Django 1.11.8 заставляла AuthenticationForm выполнять свой метод confirm_login_allowed() даже в случае ввода неправильного пароля. Это может привести к утечке информации о пользователе, в зависимости от того, какие сообщения выдает confirm_login_allowed(). Если confirm_login_allowed() не переопределен, злоумышленник может ввести произвольное имя пользователя и проверить, был ли этот пользователь установлен в is_active=False. Если confirm_login_allowed() переопределяется, может произойти утечка более конфиденциальной информации.

Эта проблема исправлена с оговоркой, что AuthenticationForm больше не сможет выдавать ошибку «This account is inactive.», если бэкенд аутентификации отвергает неактивных пользователей (бэкенд аутентификации по умолчанию, ModelBackend, делает это с Django 1.10). Этот вопрос будет рассмотрен в Django 2.1, так как исправление, устраняющее эту оговорку, вероятно, будет слишком инвазивным для включения в старые версии.

Исправления

  • Исправлено скрытое содержимое в нижней части страницы «Установка прошла успешно!» для некоторых языков (#28885).
  • Исправлено некорректное обнуление внешнего ключа, если модель имеет два внешних ключа к одной модели, а целевая модель удалена (#29016).
  • Исправлена регрессия при использовании QuerySet.values_list(..., flat=True) после annotate() (#29067).
  • Исправлена регрессия, при которой происходит сбой кверисета, аннотирующего геометрические объекты (#29054).
  • Исправлена регрессия, при которой contrib.auth.authenticate() происходит сбой, если бэкенд аутентификации не принимает request, а последующий бэкенд принимает (#29071).
  • Исправлена регрессия, при которой makemigrations происходит сбой, если в каталоге миграций нет файла __init__.py (#29091).
  • Исправлено падение при вводе недопустимого uuid в ModelAdmin.raw_id_fields (#29094).
Вернуться на верх