Релиз Django 1.4.2¶
17 октября 2012
Это второй релиз безопасности в ветке Django 1.4.
Опасный заголовок Host¶
Некоторые части Django – вне зависимости от приложений – используют полный URL, включая доменное имя, которое генерируется из заголовка Host HTTP запроса. Некоторые атаки против этого находятся вне возможностей Django и требуют правильной настройки web-сервера, которые описаны в документации.
Django’s own built-in parsing of the Host header is, however, still vulnerable,
as was reported to us recently. The Host header parsing in Django 1.3.3 and
Django 1.4.1 – specifically, django.http.HttpRequest.get_host() – was
incorrectly handling username/password information in the header. Thus, for
example, the following Host header would be accepted by Django when running on
«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).Многочисленные улучшения и исправления документации.