Примечания к выпуску Django 1.8.4¶
18 августа 2015
Django 1.8.4 исправляет проблему безопасности и несколько ошибок в 1.8.3.
Возможность отказа в обслуживании в представлении logout()
путем заполнения хранилища сессий¶
Ранее сессия могла быть создана при анонимном доступе к представлению django.contrib.auth.views.logout()
(при условии, что оно не было украшено login_required()
, как это сделано в админке). Это могло позволить злоумышленнику легко создавать множество новых записей о сеансах, отправляя повторные запросы, потенциально заполняя хранилище сеансов или вызывая вытеснение записей о сеансах других пользователей.
Функция SessionMiddleware
была изменена таким образом, чтобы больше не создавать пустые записи сеанса, в том числе, когда активна функция SESSION_SAVE_EVERY_REQUEST
.
Исправления¶
- Добавлена возможность сериализации значений из недавно добавленных
UUIDField
(#25019). - Добавлено предупреждение о проверке системы, если старые настройки
TEMPLATE_*
определены в дополнение к новым настройкамTEMPLATES
. - Исправлено
QuerySet.raw()
, чтобыInvalidQuery
не возникало при использованииdb_column
имени поляForeignKey
сprimary_key=True
(#12768). - Предотвращение утечки транзакции из-за исключения в
TestCase.setUpTestData()
(#25176). - Исправлен метод
has_changed()
вcontrib.postgres.forms.HStoreField
(#25215, #25233). - Исправлена запись скомканных миграций при выполнении команды
migrate
(#25231). - Переместили unsaved model instance assignment data loss check в
Model.save()
, чтобы облегчить использование моделей in-memory (#25160). - Предотвращены индексы
varchar_patterns_ops
иtext_patterns_ops
дляArrayField
(#25180).