Flask 重定向问题:若没有对URL进行安全验证

Posted daemonfly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask 重定向问题:若没有对URL进行安全验证相关的知识,希望对你有一定的参考价值。

一个fooo视图,一个barrr视图。通过点击视图里的链接,进行一些操作之后,返回fooo或barrr路由。

@app.route('/fooo')
def fooo():
    return '<h1>Fooo Page</h1><a href="%s">Do somethinggg</a>' % url_for('do_somethinggg', next=request.full_path)

@app.route('/barrr')
def barrr():
    return '<h1>Barrr Page</h1><a href="%s">Do somethinggg</a>' % url_for('do_somethinggg', next=request.full_path)

@app.route('/do_somethinggg')
def do_somethinggg():
    print('------do somethinggg------')
    print(request.referrer)
    # 方法一:查询request.referrer获取重定向位置
    return redirect(request.referrer or url_for('hello'))
    # 方法二:查询参数获取重定向位置
    return redirect(request.args.get('next'))

点击 URL:127.0.0.1:5000/fooo中的链接实现重定向,如下:
技术图片
链接的相对URL:/do_somethinggg?next=%2Ffooo%3F
如果我在地址栏中输入:http://127.0.0.1:5000/do_somethinggg?next=/
则会跳转到URL:http://127.0.0.1:5000/
导致开放重定向漏洞(Open Redirect)

以上是关于Flask 重定向问题:若没有对URL进行安全验证的主要内容,如果未能解决你的问题,请参考以下文章

Spring 安全重定向到登录页面以获取经过身份验证的 url

Flask教程2-重定向Cookie机制

Spring安全性重定向到经过身份验证的URL的登录页面

Spring 安全性未重定向到给定的 OAuth 身份验证 URL

应用安全筛选器后,Zuul Routing不会重定向到给定的URL

Flask 框架 重定向,捕获异常,钩子方法及使用jsonify在网页返回json数据