2016年11月1日
Django 1.8.16在1.8.15中修复了两个安全问题。
当使用Oracle数据库运行测试时,Django会创建一个临时数据库用户。在旧版本中,如果数据库设置中未手动指定密码 TEST
字典,使用硬编码密码。这可能允许网络访问数据库服务器的攻击者进行连接。
此用户通常在测试套件完成后删除,但在使用 manage.py test --keepdb
选项或用户是否有活动会话(如攻击者的连接)。
现在每个测试运行都使用随机生成的密码。
DEBUG=True
¶Django的旧版本不验证 Host
报头对抗 settings.ALLOWED_HOSTS
什么时候? settings.DEBUG=True
. 这使他们容易受到 DNS rebinding attack .
虽然Django不提供允许远程代码执行的模块,但这至少是一个跨站点脚本向量,如果开发人员在开发中加载生产数据库的副本或连接到一些没有开发实例的生产服务,这可能会非常严重。如果项目使用类似 django-debug-toolbar
,然后攻击者可以执行任意SQL,如果开发人员使用超级用户帐户连接到数据库,这可能会特别糟糕。
settings.ALLOWED_HOSTS
现在验证,无论 DEBUG
. 为了方便,如果 ALLOWED_HOSTS
是空的 DEBUG=True
,允许本地主机的以下变体 ['localhost', '127.0.0.1', '::1']
. 如果您的本地设置文件有您的产品 ALLOWED_HOSTS
值,现在必须省略它才能获取这些回退值。
7月 22, 2024