Примечания к выпуску Django 1.7.7 ¶
18 марта 2015 г.
Django 1.7.7 исправляет несколько ошибок и проблем безопасности в 1.7.6.
Возможность отказа в обслуживании с strip_tags()
¶
Прошлый год strip_tags()
был изменен на итеративную работу. Проблема в том, что размер обрабатываемых входных данных может увеличиваться на каждой итерации, что приводит к бесконечному циклу
strip_tags()
. Эта проблема затрагивает только версии Python, которые не получили исправления в HTMLParser ; а именно Python <2.7.7 и 3.3.5. Некоторые поставщики операционных систем также внесли исправление ошибки Python в свои пакеты более ранних версий.
Чтобы решить эту проблему, strip_tags()
теперь будет возвращен исходный ввод, если он обнаружит, что длина обрабатываемой строки увеличивается. Помните, что абсолютно НИКАКИХ гарантий strip_tags()
безопасности HTML не дается . Поэтому НИКОГДА не помечайте как безопасный результат strip_tags()
вызова без предварительного экранирования, например, с помощью escape()
.
Снижены возможные атаки XSS через URL-адреса перенаправления, предоставленные пользователем ¶
В некоторых случаях Django полагается на ввод пользователя (например,
django.contrib.auth.views.login()
и i18n ) для перенаправления пользователя на URL-адрес «при успехе». Безопасность проверяет эти перенаправления (а именно django.utils.http.is_safe_url()
) принятых URL-адресов с ведущими управляющими символами и поэтому считается \x08javascript:...
безопасным URL- адресом. В настоящее время эта проблема не влияет на Django, поскольку мы помещаем этот URL-адрес только в Location
заголовок ответа, а браузеры, похоже, игнорируют там JavaScript. Браузеры, которые мы тестировали, также обрабатывают URL-адреса с префиксом управляющих символов, таких как %08//example.com
относительные пути, поэтому перенаправление на небезопасную цель также не является проблемой.
Однако, если разработчик полагается на is_safe_url()
обеспечение безопасных целей перенаправления и помещает такой URL-адрес в ссылку, он может пострадать от XSS-атаки, поскольку некоторые браузеры, такие как Google Chrome, игнорируют управляющие символы в начале URL-адреса в привязке href
.
Исправления ¶
- Исправлено переименование классов в миграциях, когда переименование подкласса приводило к записи неправильного состояния для объектов, ссылающихся на суперкласс ( # 24354 ).
- Прекращена запись файлов миграции в режиме пробного запуска при объединении конфликтов миграции. Когда вызывается, файл миграции записывается в ( # 24427 ).
makemigrations --merge
verbosity=3
stdout