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

19 февраля 2013 г.

Django 1.4.4 исправляет четыре проблемы безопасности, присутствующие в предыдущих выпусках Django серии 1.4, а также несколько других ошибок и многочисленные улучшения документации.

Это четвертый выпуск исправления ошибок / безопасности в серии Django 1.4.

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

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

По этой причине Django 1.4.4 добавляет новую настройку, ALLOWED_HOSTSсодержащую явный список допустимых имен хостов / доменов для этого сайта. Запрос с заголовком Host, не совпадающим с записью в этом списке, будет инициирован, SuspiciousOperationесли request.get_host()будет вызван. Для получения полной информации см. Документацию по ALLOWED_HOSTSнастройке.

Значение по умолчанию для этого параметра в Django 1.4.4 - ['*'](соответствует любому хосту) для обратной совместимости, но мы настоятельно рекомендуем всем сайтам устанавливать более ограничительное значение.

Эта проверка хоста отключена, когда DEBUGесть Trueили во время выполнения тестов.

Десериализация XML

Анализатор XML в стандартной библиотеке Python уязвим для ряда атак через внешние сущности и расширение сущностей. Django использует этот парсер для десериализации фикстур базы данных в формате XML. Этот десериализатор не предназначен для использования с ненадежными данными, но в целях обеспечения безопасности в Django 1.4.4 десериализатор XML отказывается анализировать XML-документ с помощью DTD (определение DOCTYPE), что закрывает эти пути атаки.

Этими проблемами в стандартной библиотеке Python являются CVE-2013-1664 и CVE-2013-1665. Дополнительную информацию можно получить в группе безопасности Python .

XML-сериализатор Django не создает документы с DTD, поэтому это не должно вызывать каких-либо проблем с типичным циклом от dumpdataдо loaddata, но если вы скармливаете свои собственные XML-документы команде loaddata управления, вам нужно будет убедиться, что они не содержат DTD.

Исчерпание памяти формсета

Предыдущие версии Django не проверяли и не ограничивали данные подсчета форм, предоставляемые клиентом в форме управления набором форм, что позволяло исчерпать доступную память сервера, заставляя его создавать очень большое количество форм.

В Django 1.4.4 все наборы форм имеют строго установленное максимальное количество форм (по умолчанию 1000, хотя его можно увеличить с помощью max_numаргумента фабрики набора форм).

Утечка информации просмотра истории админки

В предыдущих версиях Django пользователь-администратор без разрешения на изменение модели мог по-прежнему просматривать представление экземпляров в Юникоде через журнал истории администрирования. Django 1.4.4 теперь ограничивает просмотр журнала истории администратора для объекта пользователями с разрешением на изменение для этой модели.

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

  • Предотвращена утечка состояния транзакции из одного запроса в другой (# 19707).
  • Изменен синтаксис команды SQL для совместимости с MySQL 4 (# 19702).
  • Добавлена ​​обратная совместимость со старыми несолеными паролями MD5 (# 18144).
  • Многочисленные улучшения и исправления документации.

Copyright ©2021 All rights reserved