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

14 мая 2014 г.

Django 1.6.5 устраняет две проблемы безопасности и несколько ошибок в 1.6.4.

Проблема: кэшам может быть неправильно разрешено хранить и обслуживать личные данные

В определенных ситуациях Django может разрешить кешам хранить личные данные, относящиеся к определенному сеансу, а затем передавать эти данные запросам с другим сеансом или вообще без сеанса. Это может привести к раскрытию информации и стать причиной заражения кеша.

При использовании сеансов Django Django устанавливает заголовок, чтобы гарантировать, что кеши не будут обслуживать кэшированные данные для запросов из других сеансов. Однако более старые версии Internet Explorer (скорее всего, только Internet Explorer 6 и Internet Explorer 7, если они работают в Windows XP или Windows Server 2003) не могут обрабатывать заголовок в сочетании со многими типами содержимого. Следовательно, Django удалит заголовок, если запрос был сделан Internet Explorer.Vary: Cookie Vary

Чтобы исправить это, особое поведение этих старых версий 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 ).

Copyright ©2020 All rights reserved