Примечания к выпуску 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).