Un open redirect parece inofensivo — tu app solo manda al usuario a algún lado tras login. Pero si ese "algún lado" viene de un parámetro que no validás, un atacante usa tu dominio confiable como trampolín a su página de phishing.

Cómo funciona

    https://sitio-confiable.com/login?next=https://evil.example.com
# Tras el login, la víctima aterriza en evil.example.com

La carnada es que el link arranca en un dominio que la víctima confía. Clickea, redirigís, y está en un login falso idéntico. Los open redirects también se encadenan para robo de tokens OAuth cuando el redirect URI no se valida estricto.

Cómo arreglarlo

  1. No redirijas a input crudo del usuario.
  2. Solo rutas relativas. Aceptá /dashboard, rechazá cualquier cosa con esquema o host.
  3. Allow-list de destinos externos.
  4. Validá redirect URIs de OAuth con match exacto (sin wildcards).
  5. Cuidado con trucos (//evil.com, encoded): validá el resultado parseado, no el string crudo.
    const next = url.searchParams.get('next') || '/'
const safe = next.startsWith('/') && !next.startsWith('//') ? next : '/'

Nurbak escanea tu app por open redirects y el resto del checklist de seguridad de APIs.

Artículos relacionados