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)。