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

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

Исправления

  • Сделан бэкэнд-метод Oracle year_lookup_bounds_for_datetime_field совместимым с Python 3 (#22551).

  • Исправлен сбой pgettext_lazy при получении содержимого байтовой строки на Python 2 (#22565).

  • Исправлен SQL, генерируемый при фильтрации по инвертированному объекту Q, содержащему объект F. (:билет:`22429`).

  • В некоторых случаях удалось избежать перезаписи данных, полученных с помощью select_related(), что могло привести к незначительному снижению производительности (#22508).

Back to Top