Примечания к выпуску Django 1.3.6¶
19 февраля 2013
Django 1.3.6 исправляет четыре проблемы безопасности, присутствовавшие в предыдущих выпусках Django серии 1.3.
Это шестой выпуск исправлений/безопасности в серии Django 1.3.
Отравление заголовка хоста¶
Некоторые части Django - независимо от приложений, написанных конечным пользователем - используют полные URL, включая доменное имя, которые генерируются из заголовка HTTP Host. Документация Django уже некоторое время содержит заметки, советующие пользователям, как настроить веб-серверы, чтобы гарантировать, что только действительные заголовки Host могут достигать приложения Django. Однако, как нам сообщили, даже при рекомендуемых конфигурациях веб-серверов все еще существуют методы, позволяющие обмануть многие распространенные веб-серверы и заставить приложение передавать неверный и, возможно, вредоносный заголовок Host.
По этой причине в Django 1.3.6 добавлена новая настройка ALLOWED_HOSTS
, которая должна содержать явный список допустимых имен хостов/доменов для данного сайта. Запрос с заголовком Host, не соответствующим записи в этом списке, будет вызывать SuspiciousOperation
, если вызывается request.get_host()
. Более подробную информацию смотрите в документации к параметру ALLOWED_HOSTS
.
Значение по умолчанию для этого параметра в Django 1.3.6 равно ['*']
(соответствие любому хосту), для обратной совместимости, но мы настоятельно рекомендуем всем сайтам устанавливать более строгое значение.
Эта проверка хоста отключена, когда DEBUG
равно True
или при выполнении тестов.
Десериализация XML¶
Парсер XML в стандартной библиотеке Python уязвим для ряда атак через внешние сущности и расширение сущностей. Django использует этот парсер для десериализации фикстур базы данных в формате XML. Десериализатор приспособлений не предназначен для использования с недоверенными данными, но в целях безопасности в Django 1.3.6 десериализатор XML отказывается анализировать XML-документ с DTD (определение DOCTYPE), что закрывает эти пути для атак.
Эти проблемы в стандартной библиотеке Python - CVE-2013-1664 и CVE-2013-1665. Более подробная информация доступна from the Python security team.
XML-сериализатор Django не создает документы с DTD, поэтому это не должно вызвать никаких проблем при типичном переходе от dumpdata
к loaddata
, но если вы передаете собственные XML-документы команде управления loaddata
, вам нужно убедиться, что они не содержат DTD.
Исчерпание памяти формы¶
Предыдущие версии Django не проверяли и не ограничивали данные о количестве форм, предоставляемые клиентом в форме управления набором форм, что позволяло исчерпать доступную память сервера, заставляя его создавать очень большое количество форм.
В Django 1.3.6 все наборы форм имеют строго ограниченное максимальное количество форм (1000 по умолчанию, хотя его можно установить выше с помощью аргумента фабрики форм max_num
).
Утечка информации о просмотре истории администратора¶
В предыдущих версиях Django пользователь-администратор, не имеющий прав на изменение модели, мог просматривать Unicode-представление экземпляров через свой журнал истории администратора. Django 1.3.6 теперь ограничивает просмотр журнала истории администратора для объекта только пользователями с правами на изменение этой модели.