17 октября 2012
Это второй релиз безопасности в ветке Django 1.4.
В некоторых местах Django – независимо от пользовательских приложений – используют полный URL, включая имя домена, которое генерируется из HTTP заголовка Host. Отражение таких атак находится за пределами возможностей Django и требует правильно сконфигурированного web-сервера. В документации можно найти несколько заметок на этот счёт.
Встроенный обработчик заголовка Host по-прежнему уязвим, как нам и сообщалось ранее. В django.http.HttpRequest.get_host() в версиях Django 1.3.3 и 1.4.1 неверно обрабатывает информацию о логине/пароле пользователя. Например, следующий код вернёт “validsite.com”:
Host: validsite.com:random@evilsite.com
Пользуясь этим, злоумышленник может вызвать методы Django – в частности восстановление пароля – для создания и отображения произвольных URL-адреса для пользователей.
Чтобы исключить такую возможность, был изменён HttpRequest.get_host(). Теперь при разборе заголовка Host, который содержит потенциально опасный контент (например, имя пользователя или пароль) будет вызывать исключение django.core.exceptions.SuspiciousOperation.
Подробнее об этом изменении можно посмотреть в security advisory.
Новые аргументы для конструктора GenericIPAddressField адаптированы таким образом, чтобы совпадали с остальными полями модели. Теперь два первых аргумента verbose_name и name.
Подкласс HTMLParser использует соответствующую версию Python (#18239).
Добавлен аргумент batch_size в qs.bulk_create() (#17788).
Исправлена небольшая регрессия в фильтрах админки, когда неправильно форматированная дата, которая передавалась как параметр, вызывала необработанное исключение ValidationError (#18530).
Исправлен бесконечный цикл при запросе доступа в шаблоне (#18979)
Исправлена совместимость с Python 2.5
Исправлена ошибка с экранированием имён файлов в заголовке Content-Disposition (#19006).
Контекстные опции для тегов trans и blocktrans теперь принимают строки в одинарных кавычках (#18881).
Многочисленные улучшения и исправления документации.
Mar 31, 2016