Django 1.7.7 版本发行说明¶
2015 年 3 月 18 日
Django 1.7.7 修复了 1.7.6 版本中的一些错误和安全问题。
通过用户提供的重定向 URL 减轻了可能的 XSS 攻击风险。¶
Django 在某些情况下依赖于用户输入(例如 django.contrib.auth.views.login()
和 i18n)来将用户重定向到“成功”URL。这些重定向的安全性检查(即 django.utils.http.is_safe_url()
)接受具有前导控制字符的 URL,因此将像 \x08javascript:...
这样的 URL 视为安全。目前这个问题不会影响 Django,因为我们只将这个 URL 放入 Location
响应头中,而浏览器似乎会忽略那里的 JavaScript。经过我们测试的浏览器还会将以控制字符前缀的 URL,如 %08//example.com
,视为相对路径,因此重定向到不安全的目标也不是一个问题。
然而,如果开发人员依赖于 is_safe_url()
来提供安全的重定向目标,并将这样的 URL 放入链接中,他们可能会受到 XSS 攻击的影响,因为一些浏览器,如 Google Chrome,会忽略在锚点的 href
中 URL 开头的控制字符。