• 3.1
  • 3.2
  • 6.1
  • Версия документации: 5.0

Примечания к выпуску Django 1.5.2

13 августа 2013

Это Django 1.5.2, исправление ошибок и обновление безопасности для Django 1.5.

Смягчение возможной XSS-атаки через пользовательское перенаправление

В некоторых случаях Django полагается на действие пользователя (например, в django.contrib.auth.views.login(), django.contrib.comments, и i18n) при перенаправлении пользователя на «успешную» страницу. Проверка безопасности в таком случае (django.util.http.is_safe_url()) не сработает, если протокол http(s) и разрешены javascript:... URL`ы для ввода. Если разработчик полагался на is_safe_url() при обеспечении безопасности редиректа и добавил такой URL в ссылку, то злоумышленник может провести XSS-атаку. В настоящий момент мы добавляем этот URL в заголовок Location ответа, так что браузеры будут игнорировать опасный JavaScript.

XSS-уязвимость в django.contrib.admin

Если URLField используется в Django 1.5, он отображает текущее значение поля и ссылку на цель на странице изменения администратора. Процедура отображения этого виджета была ошибочной и позволяла использовать XSS.

Исправления

  • Исправлен сбой с prefetch_related() (#19607), а также некоторые регрессии pickle с prefetch_related (#20157 и #20257).

  • Исправлена ​​регрессия в django.contrib.gis в выводе Google Map на Python 3 (#20773).

  • Сделано DjangoTestSuiteRunner.setup_databases правильно обрабатывающим псевдонимы для базы данных по умолчанию (#19940) и запрещено teardown_databases пытаться удалить псевдонимы (#20681).

  • Исправлен метод get_many() бэкэнда django.core.cache.backends.memcached.MemcachedCache в Python 3 (#20722).

  • Исправлены синтаксические ошибки перевода django.contrib.humanize. Затронутые языки: мексиканский испанский, монгольский, румынский, турецкий (#20695).

  • Добавлена ​​поддержка пакетов колес (#19252).

  • Токен CSRF теперь меняется при входе пользователя в систему.

  • Некоторые исправления совместимости с Python 3, включая #20212 и #20025.

  • Исправлены некоторые редкие случаи, когда исключения get() повторялись бесконечно (#20278).

  • makemessages больше не вылетает из-за UnicodeDecodeError (#20354).

  • Исправлено обнаружение geojson с помощью SpatiaLite.

  • assertContains() снова работает с двоичным содержимым (#20237).

  • Исправлено ManyToManyField, если оно имеет параметр name в Юникоде (#20207).

  • Гарантировано, что путь запроса WSGI правильно основан на переменной среды SCRIPT_NAME или настройке FORCE_SCRIPT_NAME, независимо от того, есть ли в конце косая черта (#20169).

  • Исправлена непонятная ошибка в декораторе override_settings(). Если вы получали исключение AttributeError: 'Settings' object has no attribute '_original_allowed_hosts', то это ваш случай (#20636).

Back to Top