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