Django 1.6.5 发行说明 — Django 文档

来自菜鸟教程
Django/docs/3.2.x/releases/1.6.5
跳转至:导航、​搜索

Django 1.6.5 发行说明

2014 年 5 月 14 日

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

问题:可能会错误地允许缓存存储和提供私有数据

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

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

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


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

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

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

为了解决这个问题,is_safe_url() 中的验证已经加强,以便能够处理和正确验证这些格式错误的 URL。


错误修正

  • 使 year_lookup_bounds_for_datetime_field Oracle 后端方法 Python 3 兼容 (:ticket:`22551`)。
  • 修复了 pgettext_lazy 在 Python 2 上接收字节串内容时崩溃的问题 (:ticket:`22565`)。
  • 修复了通过包含 F 对象的否定 Q 对象过滤时生成的 SQL。 (:票:`22429`)。
  • 避免在某些情况下覆盖 select_related() 获取的数据,这可能会导致轻微的性能下降 (:ticket:`22508`)。