Примечания к выпуску Django 1.4.2¶
Октябрь 17, 2012
Это второй релиз безопасности в серии Django 1.4.
Отравление заголовка хоста¶
Некоторые части Django - независимо от приложений, написанных конечным пользователем - используют полные URL, включая доменное имя, которые генерируются из заголовка HTTP Host. Некоторые атаки против этого находятся вне возможностей Django и требуют правильной настройки веб-сервера; документация Django уже некоторое время содержит заметки с рекомендациями пользователям по такой настройке.
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()
был изменен; заголовки хоста, содержащие потенциально опасное содержимое (например, пары имя пользователя/пароль), теперь вызывают исключение django.core.exceptions.SuspiciousOperation
.
Подробная информация об этой проблеме была первоначально опубликована в Интернете в виде security advisory.
Обратные несовместимые изменения¶
- Вновь введенные аргументы конструктора
GenericIPAddressField
были адаптированы к аргументам всех других полей модели. Первые два аргумента с ключевыми словами теперь verbose_name и name.
Другие исправления и изменения¶
- Подкласс HTMLParser только для соответствующих версий Python (#18239).
- Добавлен аргумент batch_size в qs.bulk_create() (#17788).
- Исправлена небольшая ошибка в фильтрах администратора, когда неправильно отформатированные даты, переданные в качестве параметров url, вызывали необработанную ошибку ValidationError (#18530).
- Исправлена ошибка бесконечного цикла при доступе к разрешениям в шаблонах (#18979)
- Исправлены некоторые проблемы совместимости с Python 2.5
- Исправлена проблема с цитированием имен файлов в заголовке Content-Disposition (#19006)
- Опция контекста в тегах
trans
иblocktrans
стала принимать литералы, заключенные в одинарные кавычки (#18881). - Многочисленные улучшения и исправления документации.