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