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

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

Copyright ©2021 All rights reserved