---
title: "Django 1.5.2 版本发行说明"
version: 6.0
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/6.0/releases/1.5.2/
canonical: https://djangodocs.dev/zh-hans/6.0/releases/1.5.2/
---
# Django 1.5.2 版本发行说明

*2013 年 8 月 13 日*

这是 Django 1.5.2，是 Django 1.5 的修复错误和安全发布版本。

## 通过用户提供的重定向 URL 减轻了可能的 XSS 攻击风险。

Django 在某些情况下（例如，`django.contrib.auth.views.login()`、`django.contrib.comments` 和 [i18n](/zh-hans/6.0/topics/i18n/)）依赖于用户输入来将用户重定向到“成功”URL。这些重定向的安全检查（即 `django.utils.http.is_safe_url()`）没有检查 URL 的协议是否为 `http(s)`，因此允许输入 `javascript:...` 类型的 URL。如果开发人员依赖于 `is_safe_url()` 来提供安全的重定向目标，并将这样的 URL 放入链接中，他们可能会受到 XSS 攻击的影响。当前情况下，这个错误不会影响 Django，因为我们只将这个 URL 放入 `Location` 响应头中，而浏览器似乎会忽略其中的 JavaScript。

## [`django.contrib.admin`](/zh-hans/6.0/ref/contrib/admin/#module-django.contrib.admin) 中的 XSS 漏洞

如果在 Django 1.5 中使用了 [`URLField`](/zh-hans/6.0/ref/models/fields/#django.db.models.URLField)，它会在管理页面的更改页面上显示字段的当前值和到目标的链接。这个小部件的显示程序存在缺陷，允许进行 XSS 攻击。

## 漏洞修复

- 修复了与 [`prefetch_related()`](/zh-hans/6.0/ref/models/querysets/#django.db.models.query.QuerySet.prefetch_related) 有关的崩溃问题 (#19607)，以及一些与 `prefetch_related` 有关的 `pickle` 回归问题 (#20157 和 #20257)。
- 在 Python 3 上修复了 [`django.contrib.gis`](/zh-hans/6.0/ref/contrib/gis/#module-django.contrib.gis) 中 Google 地图输出的回归问题 (#20773)。
- 使 `DjangoTestSuiteRunner.setup_databases` 正确处理默认数据库的别名 (#19940)，并防止 `teardown_databases` 尝试拆除别名 (#20681)。
- 修复了 Python 3 上的 `django.core.cache.backends.memcached.MemcachedCache` 后端的 `get_many()` 方法 (#20722)。
- 修复了 [`django.contrib.humanize`](/zh-hans/6.0/ref/contrib/humanize/#module-django.contrib.humanize) 中的翻译语法错误。受影响的语言包括墨西哥西班牙语、蒙古语、罗马尼亚语和土耳其语 (#20695)。
- 新增对 wheel 软件包的支持（ #19252 ）。
- 用户登录时，CSRF 令牌现在会轮换。
- 包括 #20212 和 #20025 在内的一些 Python 3 兼容性修复。
- 修复了一些罕见情况下 [`get()`](/zh-hans/6.0/ref/models/querysets/#django.db.models.query.QuerySet.get) 引发无限递归异常的问题 (#20278)。
- [`makemessages`](/zh-hans/6.0/ref/django-admin/#django-admin-makemessages) 不再因为 `UnicodeDecodeError` 而崩溃 (#20354)。
- 修复了与 SpatiaLite 的 `geojson` 检测问题。
- [`assertContains()`](/zh-hans/6.0/topics/testing/tools/#django.test.SimpleTestCase.assertContains) 再次能够处理二进制内容 (#20237)。
- 修复了如果 [`ManyToManyField`](/zh-hans/6.0/ref/models/fields/#django.db.models.ManyToManyField) 具有 Unicode `name` 参数时的问题 (#20207)。
- 确保 WSGI 请求的路径根据 `SCRIPT_NAME` 环境变量或 [`FORCE_SCRIPT_NAME`](/zh-hans/6.0/ref/settings/#std-setting-FORCE_SCRIPT_NAME) 设置正确设置，无论它们是否以斜杠结尾 (#20169)。
- 修复了 [`override_settings()`](/zh-hans/6.0/topics/testing/tools/#django.test.override_settings) 装饰器的一个晦涩 Bug。如果你遇到了 `AttributeError: 'Settings' object has no attribute '_original_allowed_hosts'` 异常，那么这个问题可能已经修复了（#20636）。
