Django 1.8.16 发行说明 — Django 文档
来自菜鸟教程
Django/docs/3.0.x/releases/1.8.16
Django 1.0.1 版本发行说明
2016 年 11 月 1 日
Django 3.1.12 修复了 3.1.11 中的两个安全问题。
在 Oracle 上运行测试时创建的具有硬编码密码的用户
使用 Oracle 数据库运行测试时,Django 创建一个临时数据库用户。 在旧版本中,如果未在数据库设置 TEST
字典中手动指定密码,则使用硬编码密码。 这可能允许具有数据库服务器网络访问权限的攻击者进行连接。
该用户通常在测试套件完成后被删除,但在使用 manage.py test --keepdb
选项或用户具有活动会话(例如攻击者的连接)时不会被删除。
现在每次测试运行都使用随机生成的密码。
DEBUG=True 时的 DNS 重新绑定漏洞
当 settings.DEBUG=True
时,旧版本的 Django 不会根据 settings.ALLOWED_HOSTS
验证 Host
标头。 这使它们容易受到 DNS 重新绑定攻击 。
虽然 Django 没有提供允许远程代码执行的模块,但这至少是一个跨站点脚本向量,如果开发人员在开发中加载生产数据库的副本或连接到一些生产服务,这可能会非常严重例如,没有开发实例。 如果一个项目使用像 django-debug-toolbar
这样的包,那么攻击者可以执行任意 SQL,如果开发人员使用超级用户帐户连接到数据库,这可能尤其糟糕。
settings.ALLOWED_HOSTS
现在生效,与 DEBUG
无关。 为方便起见,如果 ALLOWED_HOSTS
为空且 DEBUG=True
,则允许以下 localhost 变体 ['localhost', '127.0.0.1', '::1']
。 如果您的本地设置文件具有您的生产 ALLOWED_HOSTS
值,您现在必须省略它以获取这些后备值。