О релизе Django 1.3.4¶
17 октября 2012
Это четвёртый релиз в ветке Django 1.3.
Опасный заголовок Host¶
Некоторые части Django – вне зависимости от приложений – используют полный URL, включая доменное имя, которое генерируется из заголовка Host HTTP запроса. Некоторые атаки против этого находятся вне возможностей Django и требуют правильной настройки web-сервера, которые описаны в документации.
Однако встроенный в 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(). Теперь при разборе заголовка Host, который содержит потенциально опасный контент (например, имя пользователя или пароль) будет вызывать исключение django.core.exceptions.SuspiciousOperation.
Полный список исправленных ошибок можно найти на security advisory.