Django 1.5.2 release notes

2013年8月13日

这是Django 1.5.2,Django 1.5的修补程序和安全版本。

Mitigated possible XSS attack via user-supplied redirect URLs

Django在一些情况下依赖于用户输入(例如,django.contrib.auth.views.login()django.contrib.commentsi18n)将用户重定向到“on成功“URL。这些重定向的安全检查(即django.utils.http.is_safe_url())未检查方案是否为http(s),因此允许javascript:...要输入的网址。如果开发人员依赖is_safe_url()提供安全的重定向目标,并将这样的URL放入链接,他们可能遭受XSS攻击。这个bug目前不影响Django,因为我们只把这个URL放在Location响应头中,浏览器似乎忽略了JavaScript。

XSS vulnerability in django.contrib.admin

如果在Django 1.5中使用URLField,它将在管理更改页面上显示字段的当前值和目标的链接。这个小部件的显示例程有缺陷,允许XSS。

Bugfixes

  • 修复了与prefetch_related()(#19607)以及一些pickle回归与prefetch_related(#20157和#20257)的崩溃。
  • 修正了在Python 3(#20773)的Google地图输出中的django.contrib.gis中的回归。
  • 制作DjangoTestSuiteRunner.setup_databases可以正确处理默认数据库(#19940)的别名,并阻止teardown_databases试图删除别名(#20681)。
  • 修复了Python 3(#20722)上的django.core.cache.backends.memcached.MemcachedCache后端的get_many()方法。
  • 修复了django.contrib.humanize翻译语法错误。受影响的语言:墨西哥西班牙语,蒙古语,罗马尼亚语,土耳其语(#20695)。
  • 添加了对轮胎包的支持(#19252)。
  • CSRF令牌现在在用户登录时旋转。
  • 一些Python 3兼容性修补程序包括#20212和#20025。
  • 修复了一些罕见的情况,其中get()异常无限递归(#20278)。
  • makemessages不再与UnicodeDecodeError(#20354)崩溃。
  • 用Spatialite固定geojson检测。
  • assertContains()再次使用二进制内容(#20237)。
  • 如果它具有unicode name参数(#20207),则固定ManyToManyField
  • 确保WSGI请求的路径是正确基于SCRIPT_NAME环境变量或FORCE_SCRIPT_NAME设置,而不管是否具有尾部斜杠(#20169)。
  • 使用override_settings()装饰器修复了一个模糊的错误。If you hit an AttributeError: 'Settings' object has no attribute '_original_allowed_hosts' exception, it’s probably fixed (#20636).