17 октября 2012
Это четвёртый релиз в ветке Django 1.3.
Некоторые части Django – вне зависимости от приложений – используют полный URL, включая доменное имя, которое генерируется из заголовка Host HTTP запроса. Некоторые атаки против этого находятся вне возможностей Django и требуют правильной настройки web-сервера, которые описаны в документации.
Встроенный обработчик заголовка Host по-прежнему уязвим, как нам и сообщалось ранее. В django.http.HttpRequest.get_host() в версиях Django 1.3.3 и 1.4.1 неверно обрабатывает информацию о логине/пароле пользователя. Например, следующий код вернёт “validsite.com”:
Host: validsite.com:random@evilsite.com
Пользуясь этим, злоумышленник может вызвать методы Django – в частности восстановление пароля - для создания и отображения произвольных URL-адреса для пользователей.
Чтобы исключить такую возможность, был изменён HttpRequest.get_host(). Теперь при разборе заголовка Host, который содержит потенциально опасный контент (например, имя пользователя или пароль) будет вызывать исключение django.core.exceptions.SuspiciousOperation.
Полный список исправленных ошибок можно найти на security advisory.
Mar 31, 2016