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 处于活动状态也是如此。

漏洞修复

  • 增加了对新添加的 UUIDField 的值进行序列化的能力 (#25019)。

  • 如果在新的 TEMPLATES 设置之外定义了旧的 TEMPLATE_* 设置,将会添加一个系统检查警告。

  • 修复了 QuerySet.raw(),以便在使用具有 primary_key=TrueForeignKey 字段的 db_column 名称时不会引发 InvalidQuery 错误 (#12768)。

  • TestCase.setUpTestData() 中防止异常泄漏事务(#25176)。

  • 修复了 contrib.postgres.forms.HStoreField 中的 has_changed() 方法(#25215#25233)。

  • 在运行 migrate 命令时修复了合并迁移记录的问题(#25231)。

  • 未保存的模型实例分配数据丢失检查 移动到了 Model.save() 中,以便更容易使用内存中的模型(#25160)。

  • 防止了对 ArrayField 创建 varchar_patterns_opstext_patterns_ops 索引(#25180)。

Back to Top