Примечания к выпуску Django 1.5.2¶
13 августа 2013
Это Django 1.5.2, релиз исправлений и безопасности для Django 1.5.
Устранена возможная XSS-атака через URL-адреса перенаправления, заданные пользователем¶
Django полагается на ввод пользователя в некоторых случаях (например, django.contrib.auth.views.login(), django.contrib.comments и i18n), чтобы перенаправить пользователя на URL «при успехе». Проверки безопасности для этих перенаправлений (а именно django.utils.http.is_safe_url()) не проверяли, является ли схема http(s) и, как таковые, позволяли вводить URL javascript:.... Если разработчик полагался на is_safe_url() для обеспечения безопасных целей перенаправления и помещал такой URL в ссылку, он мог пострадать от XSS-атаки. В настоящее время эта ошибка не влияет на Django, поскольку мы помещаем этот URL только в заголовок ответа Location, а браузеры, похоже, игнорируют JavaScript.
XSS-уязвимость в django.contrib.admin¶
Если в Django 1.5 используется URLField, он отображает текущее значение поля и ссылку на цель на странице изменения администратора. Процедура отображения этого виджета была несовершенна и допускала XSS.
Исправления¶
- Исправлен сбой при
prefetch_related()(#19607), а также некоторые регрессииpickleприprefetch_related(#20157 и #20257). - Исправлена регрессия в
django.contrib.gisв выводе Google Map на Python 3 (#20773). - Заставил
DjangoTestSuiteRunner.setup_databasesправильно обрабатывать алиасы для базы данных по умолчанию (#19940) и предотвратил попыткиteardown_databasesснести алиасы (#20681). - Исправлен метод
django.core.cache.backends.memcached.MemcachedCacheбэкендаget_many()на Python 3 (#20722). - Исправлены синтаксические ошибки перевода
django.contrib.humanize. Затронутые языки: Мексиканский испанский, монгольский, румынский, турецкий (#20695). - Добавлена поддержка колесных пакетов (#19252).
- Токен CSRF теперь поворачивается, когда пользователь входит в систему.
- Некоторые исправления совместимости с Python 3, включая #20212 и #20025.
- Исправлены редкие случаи, когда исключения
get()повторялись бесконечно (#20278). makemessagesбольше не аварийно завершается приUnicodeDecodeError(#20354).- Исправлено обнаружение
geojsonпри использовании SpatiaLite. assertContains()снова работает с двоичным содержимым (#20237).- Исправлено
ManyToManyField, если оно имеет параметр Unicodename(#20207). - Убедитесь, что путь запроса WSGI правильно основан на переменной окружения
SCRIPT_NAMEили настройкеFORCE_SCRIPT_NAME, независимо от наличия или отсутствия косой черты (#20169). - Исправлена неясная ошибка с декоратором
override_settings(). Если вы столкнулись с исключениемAttributeError: 'Settings' object has no attribute '_original_allowed_hosts', это, вероятно, исправлено (#20636).