logo

Database

Python Unvalidated Redirect Param

Description

Detects unvalidated URL redirects in Flask applications where the redirect target comes from user-controlled input. This vulnerability could allow attackers to redirect users to malicious websites through open redirect attacks.

Weakness:

156 - Uncontrolled external site redirect

Category: Deceptive Interactions

Detection Strategy

    • Identifies imports or usage of Flask's redirect function

    • Looks for calls to 'redirect()' function in the code

    • Checks if the redirect URL parameter comes from user input without proper validation

    • Reports a vulnerability when redirect calls use unvalidated user-controlled data as the destination URL

Vulnerable code example

from flask import Flask, redirect, request

app = Flask(__name__)

@app.route('/')
def home():
    redirect_url = request.args.get('redirect_url')
    if redirect_url:...

✅ Secure code example

from flask import Flask, redirect, request
from urllib.parse import urlparse, urljoin
import logging

app = Flask(__name__)

# Define allowed domains for redirects
ALLOWED_DOMAINS = {'example.com', 'trusted.com'}...