Django 安全版本发布:2.2.3、2.1.10 和 1.11.22
根据 我们的安全版本发布策略,Django 团队发布了 Django 1.11.22、Django 2.1.10 和 Django 2.2.3。这些版本解决了以下详细说明的安全问题。我们鼓励所有 Django 用户尽快升级。
感谢 Gavin Wahl 报告此问题。
CVE-2019-12781:通过 HTTPS 连接的反向代理的 HTTP 检测错误
当部署在通过 HTTPS 连接到 Django 的反向代理之后时,django.http.HttpRequest.scheme会错误地将通过 HTTP 发出的客户端请求检测为使用 HTTPS。这会导致以下内容的结果不正确:is_secure()和build_absolute_uri(),并且不会根据SECURE_SSL_REDIRECT.
HttpRequest.scheme现在尊重SECURE_PROXY_SSL_HEADER(如果已配置)以及请求中设置的相应标头(对于 HTTP 和 HTTPS 请求)。
如果您在转发 HTTP 请求并通过 HTTPS 连接到 Django 的反向代理之后部署 Django,请务必验证您的应用程序是否正确处理依赖于scheme, is_secure(), build_absolute_uri()和SECURE_SSL_REDIRECT.
受影响的支持版本
- Django 主开发分支
- 2.2.3 版本之前的 Django 2.2
- 2.1.10 版本之前的 Django 2.1
- 1.11.22 版本之前的 Django 1.11
解决方案
已将解决此问题的补丁应用于 Django 的主分支和 2.2、2.1 和 1.11 发布分支。可以从以下更改集中获取这些补丁
- 在 主分支上
- 在 2.2 发布分支上
- 在 2.1 发布分支上
- 在 1.11 发布分支上
已发布以下版本:
- Django 1.11.22 (下载 Django 1.11.22 | 1.11.22 校验和)
- Django 2.1.10 (下载 Django 2.1.10 | 2.1.10 校验和)
- Django 2.2.3 (下载 Django 2.2.3 | 2.2.3 校验和)
此版本使用的 PGP 密钥 ID 为 Mariusz Felisiak:2EF56372BA48CD1B。
关于安全报告的常规说明
与以往一样,我们要求通过私人电子邮件将潜在的安全问题报告给security@djangoproject.com,而不是通过 Django 的 Trac 实例、Django 的 GitHub 代码库或 django-developers 列表。请参阅 我们的安全策略,了解更多信息。