Примечания к выпуску Django 1.8.7¶
Ноябрь 24, 2015
Django 1.8.7 исправляет проблему безопасности и несколько ошибок в 1.8.6.
Кроме того, шестая версия Django, django.utils.six
, была обновлена до последней версии (1.10.0).
Исправлена возможность утечки настроек в фильтре шаблона date
¶
Если приложение позволяет пользователям указывать непроверенный формат даты и передает этот формат фильтру date
, например, {{ last_updated|date:user_date_format }}
, то злоумышленник может получить любой секрет в настройках приложения, указав ключ настроек вместо формата даты. например, "SECRET_KEY"
вместо "j/m/Y"
.
Чтобы исправить это, базовая функция, используемая фильтром шаблона date
, django.utils.formats.get_format()
, теперь позволяет получить доступ только к настройкам форматирования даты/времени.
Исправления¶
- Исправлено падение отладочного представления во время осеннего изменения DST, когда
USE_TZ
установленFalse
иpytz
. - Исправлена регрессия в версии 1.8.6, которая приводила к сбою маршрутизаторов баз данных без метода
allow_migrate()
(#25686). - Исправлена регрессия в 1.8.6, восстановлена возможность использования объектов
Manager
для аргументаqueryset
вModelChoiceField
(#25683). - Исправлена регрессия в версии 1.8.6, которая приводила к неудаче приложения с южными миграциями в каталоге
migrations
(#25618). - Исправлена возможность потери данных при
Prefetch
, еслиto_attr
установлен наManyToManyField
(#25693). - Исправлена регрессия в 1.8, благодаря которой
gettext()
снова возвращает байтовые строки UTF-8 на Python 2, если входные данные являются байтовыми строками (#25720). - Исправлена сериализация
DateRangeField
иDateTimeRangeField
(#24937). - Исправлен точный поиск
ArrayField
(#25666). - Исправлено обновление
Model.refresh_from_db()
полейForeignKey
сon_delete=models.SET_NULL
(#25715). - Исправлена регрессия дублирующего запроса в 1.8 при проксированном удалении модели (#25685).
- Исправлено падение
set_FOO_order()
, когдаForeignKey
модели сorder_with_respect_to
ссылается на модель сOneToOneField
первичным ключом (#25786). - Исправлена неправильная проверка для
PositiveIntegerField
иPositiveSmallIntegerField
в MySQL, в результате чего значения больше 4294967295 или 65535, соответственно, проходили проверку и молча усекались базой данных (#25767).