Примечания к выпуску Django 1.6.5¶
Май 14, 2014
Django 1.6.5 исправляет две проблемы безопасности и несколько ошибок в 1.6.4.
Проблема: Кэшам может быть неправильно разрешено хранить и обслуживать частные данные¶
В некоторых ситуациях Django может позволить кэшам хранить приватные данные, относящиеся к определенной сессии, а затем предоставлять эти данные запросам с другой сессией или вообще без сессии. Это может привести к раскрытию информации и стать вектором для отравления кэша.
При использовании сессий Django, Django устанавливает заголовок Vary: Cookie
для того, чтобы кэш не передавал кэшированные данные на запросы из других сессий. Однако старые версии Internet Explorer (скорее всего, только Internet Explorer 6, и Internet Explorer 7, если он работает на Windows XP или Windows Server 2003) не могут обрабатывать заголовок Vary
в сочетании со многими типами содержимого. Поэтому Django удалит этот заголовок, если запрос был сделан Internet Explorer.
Чтобы исправить это, специальное поведение для этих старых версий Internet Explorer было удалено, и заголовок Vary
больше не удаляется из ответа. Кроме того, модификации заголовка Cache-Control
для всех запросов Internet Explorer с заголовком Content-Disposition
также были удалены, так как было обнаружено, что они имеют аналогичные проблемы.
Проблема: Неправильная проверка неверно сформированных URL перенаправления из пользовательского ввода¶
Проверка перенаправлений неправильно проверяет некоторые URL-адреса неправильной формы, которые принимаются некоторыми браузерами. Это позволяет неожиданно перенаправить пользователя на небезопасный URL.
Django полагается на ввод пользователя в некоторых случаях (например, django.contrib.auth.views.login()
, django.contrib.comments
и i18n), чтобы перенаправить пользователя на URL «при успехе». Проверки безопасности для этих перенаправлений (а именно django.utils.http.is_safe_url()
) неправильно проверяют некоторые неправильные URL, такие как http:\\\\\\djangoproject.com
, которые принимаются некоторыми браузерами с более либеральным разбором URL.
Чтобы исправить это, проверка в is_safe_url()
была ужесточена, чтобы иметь возможность обрабатывать и правильно проверять эти неправильные URL.
Исправления¶
- Сделали метод бэкенда
year_lookup_bounds_for_datetime_field
Oracle совместимым с Python 3 (#22551). - Исправлено падение
pgettext_lazy
при получении байтового содержимого на Python 2 (#22565). - Исправлен SQL, генерируемый при фильтрации по отрицаемому объекту
Q
, который содержит объектF
. (#22429). - Предотвращена перезапись данных, получаемых
select_related()
в некоторых случаях, что могло привести к незначительному снижению производительности (#22508).