Django 2.2.3 版本发行说明

2019 年 7 月 1 日

Django 2.2.3 修复了 Django 2.2.2 中的一个安全问题和若干个错误。此外,还整合了来自 Transifex 的最新字符串翻译。

CVE-2019-12781 :通过 HTTPS 连接的反向代理中,HTTP 检测不正确。

当部署在反向代理后面,通过 HTTPS 连接到 Django 时,django.http.HttpRequest.scheme 会错误地将客户端通过 HTTP 发送的请求检测为使用 HTTPS。这导致了 is_secure()build_absolute_uri() 的不正确结果,以及 HTTP 请求不会根据 SECURE_SSL_REDIRECT 进行重定向到 HTTPS。

现在,HttpRequest.scheme 会根据配置的 SECURE_PROXY_SSL_HEADER,如果已配置,并且请求上设置了适当的标头,对于 HTTP 和 HTTPS 请求都会进行相应的处理。

如果您在反向代理后面部署 Django,该代理转发 HTTP 请求并通过 HTTPS 连接到 Django,请确保验证您的应用程序正确处理依赖于 schemeis_secure()build_absolute_uri()SECURE_SSL_REDIRECT 的代码路径。

漏洞修复

  • 修复了 Django 2.2 中的一个回归问题,其中 AvgStdDevVariance 在使用 filter 参数时崩溃 (#30542)。
  • 修复了 Django 2.2.2 中的一个回归问题,其中自动重新加载器在出现 AttributeError 时崩溃,例如在使用 ipdb 时 (#30588)。