Django 1.6.5发行说明

2014年5月14日

Django1.6.5修复了1.6.4中的两个安全问题和几个错误。

问题:可能不正确地允许缓存存储和服务私有数据

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

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

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

问题:来自用户输入的重定向URL格式错误,未正确验证

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

Django在某些情况下依赖于用户输入(例如 django.contrib.auth.views.login()django.contrib.commentsi18n )将用户重定向到“on success”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上接收bytesting内容时崩溃 (#22565

  • 修正了当被否定的 Q 包含一个 F 对象。 (#22429

  • 避免覆盖由获取的数据 select_related() 在某些情况下,可能导致轻微的性能回归 (#22508