logo

Database

Typescript Express Open Redirect

Description

Detects open redirect vulnerabilities in Express.js applications where user-controlled input (from HTTP requests) is used directly in redirect functions without proper validation. This allows attackers to redirect users to malicious websites by manipulating the redirect URL parameter.

Weakness:

156 - Uncontrolled external site redirect

Category: Deceptive Interactions

Detection Strategy

    • Check if code calls Express redirect functions (res.redirect, res.location, etc.)

    • Verify if the redirect URL parameter comes from HTTP request inputs (req.query, req.params, etc.)

    • Report vulnerability if unvalidated request input is used directly in redirect function

    • Example vulnerable code: res.redirect(req.query.next)

Vulnerable code example

import express from 'express';
const app = express();

app.get('/redirect', (req, res) => {
    const target = req.query.url;
    res.redirect(target); // Vulnerable: Unvalidated redirect allows attackers to specify malicious URLs
});
...

✅ Secure code example

import express from 'express';
const app = express();

app.get('/redirect', (req, res) => {
    const target = req.query.url;
    // Define allowlist of permitted redirect destinations
    const allowedUrls = ['/home', '/profile', '/dashboard', '/login'];
    ...