---
title: "Django 1.6.5 版本发行说明"
version: 5.1
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/5.1/releases/1.6.5/
canonical: https://djangodocs.dev/zh-hans/5.1/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 被某些浏览器接受。这使得用户可能意外地被重定向到不安全的 URL 。

Django 在某些情况下（例如 `django.contrib.auth.views.login()`、`django.contrib.comments` 和 [i18n](/zh-hans/5.1/topics/i18n/)）依赖于用户输入来将用户重定向到“成功”URL。对于这些重定向的安全性检查（即 `django.utils.http.is_safe_url()`），未正确验证一些格式错误的 URL，例如 `http:\\\\\\djangoproject.com`，这些 URL 可以被一些具有更自由 URL 解析的浏览器接受。

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

## 漏洞修复

- 使 Oracle 后端的 `year_lookup_bounds_for_datetime_field` 方法兼容 Python 3（[#22551](https://code.djangoproject.com/ticket/22551)）。
- 修复了在 Python 2 上接收字节串内容时导致 `pgettext_lazy` 崩溃的问题（[#22565](https://code.djangoproject.com/ticket/22565)）。
- 修复了在筛选中包含一个 `F` 对象的否定 `Q` 对象时生成的 SQL（[#22429](https://code.djangoproject.com/ticket/22429)）。
- 在某些情况下避免覆盖由 `select_related()` 获取的数据，这可能会导致轻微的性能回退（[#22508](https://code.djangoproject.com/ticket/22508)）。
