Примечания к выпуску Django 1.4.2

Октябрь 17, 2012

Это второй релиз безопасности в серии Django 1.4.

Отравление заголовка хоста

Некоторые части Django - независимо от приложений, написанных конечным пользователем - используют полные URL, включая доменное имя, которые генерируются из заголовка HTTP Host. Некоторые атаки против этого находятся вне возможностей Django и требуют правильной настройки веб-сервера; документация Django уже некоторое время содержит заметки с рекомендациями пользователям по такой настройке.

Однако встроенный в Django разбор заголовка Host все еще уязвим, о чем нам недавно сообщили. Разбор заголовка Host в Django 1.3.3 и Django 1.4.1 - в частности, django.http.HttpRequest.get_host() - некорректно обрабатывал информацию об имени пользователя/пароле в заголовке. Так, например, следующий заголовок Host был бы принят Django при запуске на «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).
  • Многочисленные улучшения и исправления документации.
Вернуться на верх