Django 1.6.5 release notes

2014年5月14日

Django 1.6.5修复了两个安全问题和几个错误在1.6.4。

Issue: Caches may incorrectly be allowed to store and serve private data

在某些情况下,Django可以允许高速缓存存储与特定会话相关的私有数据,然后将该数据提供给具有不同会话或根本没有会话的请求。这可能导致信息泄露,并且可能是缓存中毒的向量。

使用Django会话时,Django将设置Vary: Cookie头,以确保缓存不会向其他会话的请求提供缓存数据。但是,较旧版本的Internet Explorer(最可能只有Internet Explorer 6和Internet Explorer 7(如果在Windows XP或Windows Server 2003上运行))无法处理Vary头和许多内容类型。因此,如果请求是由Internet Explorer创建的,Django将删除头。

为了解决这个问题,这些旧的Internet Explorer版本的特殊行为已被删除,并且不再从响应中剥离Vary头。此外,对具有Content-Disposition头的所有Internet Explorer请求对Cache-Control头的修改也已删除,因为它们被发现有类似的问题。

Issue: Malformed redirect URLs from user input not correctly validated

重定向的验证没有正确验证一些格式不正确的网址,某些浏览器可以接受。这允许用户意外地重定向到不安全的URL。

Django在一些情况下依赖于用户输入(例如,django.contrib.auth.views.login()django.contrib.commentsi18n)将用户重定向到“on成功“URL。这些重定向(即django.utils.http.is_safe_url())的安全检查未正确验证某些格式错误的网址,例如http:\\\ djangoproject.com ,一些浏览器接受更自由的URL解析。

为了弥补这一点,在is_safe_url()中的验证已经收紧,以便能够处理并正确验证这些格式错误的URL。

Bugfixes

  • 使year_lookup_bounds_for_datetime_field Oracle后端方法与Python 3兼容(#22551)。
  • 修复了在Python 2(#22565)上接收到测试内容时,pgettext_lazy崩溃的问题。
  • 修正了由包含F对象的否定Q对象进行过滤时生成的SQL。#22429)。
  • 避免在某些情况下覆盖由select_related()提取的数据,这可能会导致轻微的性能回退(#22508)。