Примечания к выпуску 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)
, и поэтому позволяли вводить javascript:...
URL. Если разработчик полагался на 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).