Django 2.0.2 版本发行说明

2018 年 2 月 1 日

Django 2.0.2 修复了 2.0.1 版本中的一个安全问题和一些错误。

CVE-2018-6188: AuthenticationForm 中的信息泄露问题

Django 1.11.8 中的一个退化问题导致 AuthenticationForm 即使输入了不正确的密码,也会运行其 confirm_login_allowed() 方法。这可能会泄露关于用户的信息,具体取决于 confirm_login_allowed() 引发了什么消息。如果未覆盖 confirm_login_allowed(),攻击者可以输入任意用户名并查看该用户是否已设置为 is_active=False。如果覆盖了 confirm_login_allowed(),则可能会泄露更敏感的详细信息。

这个问题已经得到修复,但需要注意的是,如果身份验证后端拒绝非活动用户(默认身份验证后端“ModelBackend”自 Django 1.10 起就一直是这样),那么 AuthenticationForm 不再会引发“此帐户处于非活动状态。”错误。这个问题将在 Django 2.1 中重新审查,因为解决这个问题的修复措施可能对旧版本来说过于侵入性。

漏洞修复

  • 已修复某些语言版本的 "安装成功!" 页面底部的隐藏内容问题(#28885)。

  • 修复了如果一个模型有两个指向同一模型的外键,且目标模型被删除时外键空值化不正确的问题 (#29016)。

  • 已修复在使用 QuerySet.values_list(..., flat=True) 后跟 annotate() 时的回归问题(#29067)。

  • 已修复一个回归问题,其中对包含几何对象的查询集进行注释会导致崩溃(#29054)。

  • 修复了一个退化问题,即如果身份验证后端不接受 request,而后续的后端接受它,contrib.auth.authenticate() 会崩溃的问题 (#29071)。

  • 已修复一个回归问题,其中如果迁移目录没有 __init__.py 文件,makemigrations 会崩溃(#29091)。

  • 修复了在 ModelAdmin.raw_id_fields 中输入无效 UUID 时导致崩溃的问题 (#29094)。

Back to Top