Django 1.8.4 版本发行说明¶
2015 年 8 月 18 日
Django 1.8.4 修复了 1.8.3 中的一个安全问题和几个错误。
在 logout()
视图中存在拒绝服务的可能性,因为会话存储被填满。¶
以前,在匿名访问 django.contrib.auth.views.logout()
视图时可以创建会话(前提是没有像在管理界面中那样使用 login_required()
进行装饰)。这可能允许攻击者通过发送重复的请求轻松创建许多新的会话记录,潜在地填满会话存储或导致其他用户的会话记录被逐出。
SessionMiddleware
已经修改,不再创建空的会话记录,即使 SESSION_SAVE_EVERY_REQUEST
处于活动状态也是如此。
漏洞修复¶
如果在新的
TEMPLATES
设置之外定义了旧的TEMPLATE_*
设置,将会添加一个系统检查警告。修复了
QuerySet.raw()
,以便在使用具有primary_key=True
的ForeignKey
字段的db_column
名称时不会引发InvalidQuery
错误 (#12768)。在
TestCase.setUpTestData()
中防止异常泄漏事务(#25176)。修复了
contrib.postgres.forms.HStoreField
中的has_changed()
方法(#25215,#25233)。在运行
migrate
命令时修复了合并迁移记录的问题(#25231)。将 未保存的模型实例分配数据丢失检查 移动到了
Model.save()
中,以便更容易使用内存中的模型(#25160)。防止了对
ArrayField
创建varchar_patterns_ops
和text_patterns_ops
索引(#25180)。