17 октября 2012
Это второй релиз безопасности в ветке Django 1.4.
В некоторых местах Django – независимо от пользовательских приложений – используют полный URL, включая имя домена, которое генерируется из HTTP заголовка Host. Отражение таких атак находится за пределами возможностей 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.
GenericIPAddressField адаптированы таким образом, чтобы совпадали с остальными полями модели. Теперь два первых аргумента verbose_name и name.trans и blocktrans теперь принимают строки в одинарных кавычках (#18881).июн. 04, 2020