Django 1.8.7 版本发行说明¶
2015 年 11 月 24 日
Django 1.8.7 修复了 1.8.6 中的一个安全问题和几个错误。
另外,Django 的兼容库版本的 six,即 django.utils.six,已升级到最新版本(1.10.0)。
修复了模板过滤器 date 中的设置泄漏可能性¶
如果一个应用程序允许用户指定未经验证的日期格式,并将此格式传递给 date 过滤器,例如 {{ last_updated|date:user_date_format }},那么一个恶意用户可以通过指定设置键而不是日期格式来获取应用程序设置中的任何密钥,例如 "SECRET_KEY" 而不是 "j/m/Y"。
为了解决这个问题,被 date 模板过滤器使用的底层函数 django.utils.formats.get_format() 现在只允许访问日期/时间格式设置。
漏洞修复¶
在秋季 DST 更改期间,当
USE_TZ为False且安装了pytz时,修复了调试视图的崩溃问题。修复了 1.8.6 中的回归问题,导致没有
allow_migrate()方法的数据库路由器崩溃的问题(#25686)。通过恢复可以使用
Manager对象作为ModelChoiceField的queryset参数的能力,修复了 1.8.6 中的回归问题(#25683)。修复了 1.8.6 中的回归问题,导致具有 South 迁移的应用在
migrations目录中失败的问题(#25618)。修复了使用
Prefetch时,如果将to_attr设置为ManyToManyField,可能会导致数据丢失的问题 (#25693)。通过在 Python 2 中,如果输入是字节串,再次使
gettext()返回 UTF-8 字节串,修复了 1.8 中的回归问题(#25720)。修复了对
DateRangeField和DateTimeRangeField的序列化问题(#24937)。修复了
ArrayField的精确查找问题(#25666)。修复了
Model.refresh_from_db()更新带有on_delete=models.SET_NULL的ForeignKey字段的问题(#25715)。修复了 1.8 中在代理模型删除时出现的重复查询回归问题(#25685)。
修复了当具有
order_with_respect_to的模型的ForeignKey引用具有OneToOneField主键的模型时,导致set_FOO_order()崩溃的问题(#25786)。修复了在 MySQL 上对
PositiveIntegerField和PositiveSmallIntegerField进行错误验证的问题,导致值大于 4294967295 或 65535 的值通过验证,并被数据库默默截断(#25767)。