【问题标题】:what is the best way to avoid Open Redirects in django在 django 中避免打开重定向的最佳方法是什么
【发布时间】: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(最新版本)

【问题讨论】:

    标签: django apache redirect


    【解决方案1】:

    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

    【讨论】:

    • 自 Django 3.0 起,is_safe_url 已被弃用,取而代之的是 django.utils.http 中的 url_has_allowed_host_and_scheme
    • 请注意 url_has_allowed_host_and_scheme 仍然不安全!除了使用新功能 url_has_allowed_host_and_scheme 之外,您还应该确保使用 urlencode 过滤器对您的 URL 进行编码。
    • @mlissner 只做url_has_allowed_host_and_scheme 不安全的原因是什么? (没有urlencode
    • 我的错——我在这里找到了答案:stackoverflow.com/a/60372947/118608
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2011-01-12
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多