Django 2.1.10 版本发行说明

2019 年 7 月 1 日

Django 2.1.10 修复了 2.1.9 版本中的一个安全问题。

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 的代码路径。