Примечания к выпуску Django 1.10.3¶
1 ноября 2016
Django 1.10.3 исправляет две проблемы безопасности и несколько ошибок в 1.10.2.
Пользователь с жестко заданным паролем, созданный при выполнении тестов на Oracle¶
При запуске тестов с базой данных Oracle, Django создает временного пользователя базы данных. В старых версиях, если пароль не указан вручную в словаре настроек базы данных TEST
, используется жестко закодированный пароль. Это может позволить злоумышленнику с сетевым доступом подключиться к серверу базы данных.
Этот пользователь обычно отбрасывается после завершения набора тестов, но не при использовании опции manage.py test --keepdb
или если пользователь имеет активную сессию (например, соединение злоумышленника).
Теперь для каждого тестового запуска используется случайно сгенерированный пароль.
Уязвимость перепривязки DNS при DEBUG=True
¶
Старые версии Django не проверяют заголовок Host
на соответствие settings.ALLOWED_HOSTS
при settings.DEBUG=True
. Это делает их уязвимыми для DNS rebinding attack.
Хотя Django не поставляет модуль, позволяющий удаленное выполнение кода, это, по крайней мере, вектор межсайтового скриптинга, который может быть довольно серьезным, если разработчики загружают копию производственной базы данных в разработке или подключаются к некоторым производственным сервисам, для которых нет экземпляра разработки, например. Если в проекте используется пакет типа django-debug-toolbar
, то злоумышленник может выполнить произвольный SQL, что может быть особенно плохо, если разработчики подключаются к базе данных с учетной записью суперпользователя.
settings.ALLOWED_HOSTS
теперь проверяется независимо от DEBUG
. Для удобства, если ALLOWED_HOSTS
пуст и DEBUG=True
, то разрешены следующие вариации localhost ['localhost', '127.0.0.1', '::1']
. Если в вашем локальном файле настроек есть ваше производственное значение ALLOWED_HOSTS
, то теперь вы должны опустить его, чтобы получить эти резервные значения.
Исправления¶
- Позволяет проверять свойства
User.is_authenticated
иUser.is_anonymous
на принадлежность кset
(#27309). - Исправлено снижение производительности при выполнении
migrate
в проектах с операциямиRenameModel
(#27279). - Добавлено
model_name
к вызовамallow_migrate()
вmakemigrations
(#27200). - Заставил представление
JavaScriptCatalog
уважать аргументpackages
; ранее он игнорировался (#27374). - Исправлено
QuerySet.bulk_create()
на PostgreSQL, когда количество объектов кратно плюс один отbatch_size
(#27385). - Предотвращение использования
i18n_patterns()
слишком большой части URL в качестве языка для исправления случая использованияprefix_default_language=False
(#27063). - Заменено возможно некорректное перенаправление с
SessionMiddleware
при уничтожении сессии в параллельном запросе наSuspiciousOperation
, указывающее, что запрос не может быть завершен (#27363).