Примечания к выпуску 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
больше не может вызывать ошибку «Этот аккаунт неактивен.», если бэкенд аутентификации отвергает неактивных пользователей (бэкенд аутентификации по умолчанию, 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).