flawopen.com/xss/Go

● CWE-79 · Alta
Investigación · FlawOpen

Cross-Site Scripting in Go

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Go. Side-by-side vulnerable vs secure code examples for html/template contextual escaping and Gin responses.

💡 Explicación en Lenguaje Sencillo (ELI5)

Imagina clavar una nota en el tablón de anuncios del vecindario que diga: 'Quien lea esto, entregue su cartera a la persona que tiene al lado'. Si los vecinos obedecieran ciegamente cada cartel colgado, cualquiera que pusiera una nota podría robar el dinero de todos.

Conceptos Clave y Términos

Web Application Security
Componente de arquitectura central afectado por CWE-79.
CWE-79
Clasificación estándar Common Weakness Enumeration (CWE) para xss-go.
Defense-in-Depth
Verificación de ingeniería multicapa y aislamiento de límites en tiempo de ejecución.

Flujo de Ataque Paso a Paso

Step 1

Inyección de Carga Maliciosa de Script

El atacante inyecta etiquetas HTML o scripts (ej. <script> o <img onerror=...>) a través de formularios o parámetros URL.

Step 2

Interpolación en el DOM Sin Escapar

La aplicación web refleja la entrada en el HTML de respuesta o la almacena sin codificación contextual de entidades HTML.

Step 3

Interpretación y Ejecución en el Navegador

Cuando una víctima visita la página, su navegador interpreta los caracteres inyectados como instrucciones ejecutables.

Step 4

Secuestro de Sesión y Robo de Credenciales

El script inyectado accede a document.cookie, tokens en almacenamiento local y envía solicitudes autenticadas en nombre de la víctima.

Código Fuente: Vulnerable vs. Seguro

✕ IMPLEMENTACIÓN VULNERABLE
// text/template does no HTML escaping
import "text/template"

t := template.Must(
  template.New("w").Parse(
    "<div>Welcome, {{.}}</div>"))
t.Execute(w, name)
✓ PARCHE SEGURO Y ROBUSTO
// html/template escapes by context
import "html/template"

t := template.Must(
  template.New("w").Parse(
    "<div>Welcome, {{.}}</div>"))
t.Execute(w, name)

Lista de Verificación de Seguridad para Ingeniería

References