Примечания к выпуску 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.

Подробная информация об этой проблеме изначально была размещена в Интернете как рекомендация по безопасности .

Обратно несовместимые изменения

  • Недавно представленные GenericIPAddressField аргументы конструктора были адаптированы для соответствия аргументам всех других полей модели. Первые два аргумента ключевого слова теперь verbose_name и name.

Прочие исправления и изменения

  • Подкласс HTMLParser только для соответствующих версий Python (# 18239).
  • В qs.bulk_create () добавлен аргумент batch_size (# 17788).
  • Исправлена ​​небольшая регрессия в фильтрах администратора, когда неправильно отформатированные даты, передаваемые в качестве параметров URL-адреса, вызывали необработанную ValidationError (# 18530).
  • Исправлена ​​ошибка бесконечного цикла при доступе к разрешениям в шаблонах (# 18979).
  • Исправлены некоторые проблемы совместимости с Python 2.5.
  • Исправлена ​​проблема с цитируемыми именами файлов в заголовке Content-Disposition (# 19006).
  • Параметр контекста в тегах transи blocktransтеперь принимает литералы, заключенные в одинарные кавычки (# 18881).
  • Многочисленные улучшения и исправления документации.

Copyright ©2021 All rights reserved