Примечания к выпуску Django 1.3.4 ¶
17 октября 2012 г.
Это четвертый выпуск из серии Django 1.3.
Отравление заголовка хоста ¶
Некоторые части 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
.
Подробная информация об этой проблеме изначально была опубликована в Интернете как рекомендация по безопасности .