【发布时间】:2014-06-07 15:49:51
【问题描述】:
例如如果以下内容从 mysite.com 重定向到 evilsite.com https://www.mysite.com/http:%5C%5Cwww.Evilsite.com
我正在使用 django 1.4 托管在 apache 上,使用 mod_wsgi(最新版本)
【问题讨论】:
例如如果以下内容从 mysite.com 重定向到 evilsite.com https://www.mysite.com/http:%5C%5Cwww.Evilsite.com
我正在使用 django 1.4 托管在 apache 上,使用 mod_wsgi(最新版本)
【问题讨论】:
Django 无法自动阻止所有打开的重定向攻击。
作为一种解决方法,Django 提供了一个辅助函数django.utils.http.is_safe_url。在将 url 传递给重定向函数之前,您需要手动检查 url。不要实现自己的功能。甚至 django 核心开发人员一开始也没有正确实现它。检查这个security release。
参考:
Avoid open redirect issue with whitelist
Put protection against unsafe redirects into HttpResponseRedirectBase
【讨论】:
is_safe_url 已被弃用,取而代之的是 django.utils.http 中的 url_has_allowed_host_and_scheme。
url_has_allowed_host_and_scheme 之外,您还应该确保使用 urlencode 过滤器对您的 URL 进行编码。
url_has_allowed_host_and_scheme 不安全的原因是什么? (没有urlencode)