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'}...