Django 1.5.3发行说明

2013年9月10日

这是django 1.5.3,是django 1.5系列中的第三个版本。它解决了一个安全问题,还包含一个可选功能,以增强 django.contrib.sessions .

中的目录遍历漏洞 ssi 模板标签

在先前版本的Django中,可以绕过 ALLOWED_INCLUDE_ROOTS 用于安全的设置 ssi 模板标记,通过指定以允许的根目录之一开头的相对路径。例如,如果 ALLOWED_INCLUDE_ROOTS = ("/var/www",) 可能出现以下情况:

{% ssi "/var/www/../../etc/passwd" %}

实际上,这不是一个很常见的问题,因为它需要模板作者将 ssi 文件在用户控制的变量中,但原则上是可能的。

缓解中的远程代码执行漏洞 django.contrib.sessions

django.contrib.sessions 目前使用的是 pickle 在将会话数据存储到后端之前对其进行序列化。如果您使用的是 signed cookie session backendSECRET_KEY 攻击者已知(Django中没有会导致泄漏的固有漏洞),攻击者可以将字符串插入到他们的会话中,当未选中该字符串时,将在服务器上执行任意代码。这样做的技术很简单,很容易在互联网上找到。尽管Cookie会话存储器对Cookie存储的数据进行签名以防止篡改,但是 SECRET_KEY 泄漏会立即升级为远程代码执行漏洞。

这种攻击可以通过使用JSON序列化会话数据而不是 pickle . 为了方便起见,Django 1.5.3引入了一个新的设置, SESSION_SERIALIZER ,自定义会话序列化格式。为了向后兼容,此设置默认为使用 pickle . 虽然JSON序列化不支持所有的python对象,例如 pickle 是的,我们强烈建议切换到JSON序列化值。此外,由于JSON需要字符串键,如果在 request.session . 见 会话序列化 有关详细信息的文档。