Django 1.10.3发行说明

2016年11月1日

Django1.10.3在1.10.2中修复了两个安全问题和几个错误。

在Oracle上运行测试时创建的具有硬编码密码的用户

当使用Oracle数据库运行测试时,Django会创建一个临时数据库用户。在旧版本中,如果数据库设置中未手动指定密码 TEST 字典,使用硬编码密码。这可能允许网络访问数据库服务器的攻击者进行连接。

此用户通常在测试套件完成后删除,但在使用 manage.py test --keepdb 选项或用户是否有活动会话(如攻击者的连接)。

现在每个测试运行都使用随机生成的密码。

DNS重新绑定漏洞 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 值,现在必须省略它才能获取这些回退值。

错误修正

  • 允许 User.is_authenticatedUser.is_anonymous 性能测试 set 会员 (#27309

  • 修复了运行时的性能回归 migrate 在项目中 RenameModel 操作 (#27279

  • 补充 model_nameallow_migrate() 来电 makemigrations (#27200

  • 制成 JavaScriptCatalog 视图尊重 packages 参数;以前被忽略 (#27374

  • 固定的 QuerySet.bulk_create() 在PostgreSQL上,当对象数是一个倍数加一个 batch_size (#27385

  • 预防的 i18n_patterns() 使用过多的URL作为语言来修复 prefix_default_language=False (#27063

  • 替换了可能不正确的重定向自 SessionMiddleware 当会话在与 SuspiciousOperation 指示无法完成请求 (#27363