Примечания к выпуску 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, если оно имеет параметр Unicode name (#20207).
  • Убедитесь, что путь запроса WSGI корректно основывается на переменной окружения SCRIPT_NAME или настройке FORCE_SCRIPT_NAME, независимо от наличия или отсутствия косой черты (#20169).
  • Исправлена неясная ошибка с декоратором override_settings(). Если вы столкнулись с исключением AttributeError: 'Settings' object has no attribute '_original_allowed_hosts', это, вероятно, исправлено (#20636).
Вернуться на верх