Saltar al contenido

Cross-site scripting (XSS)

En el XSS, un contenido externo se convierte en código ejecutable en el navegador. Lo decisivo es cómo inserta la aplicación las entradas en sus páginas.

También conocido comoXSS
Seguridad informática

Cross-site scripting, o XSS, es un ataque en el que código externo se ejecuta en el navegador dentro del contexto de un sitio afectado. La aplicación incorpora datos no fiables a una página de forma que el navegador los interpreta como contenido ejecutable. El código puede, por ejemplo, modificar la página mostrada o enviar solicitudes con los permisos de la persona que ha iniciado sesión.

Un comentario en un portal de proyectos

Un portal de proyectos ficticio guarda comentarios en el campo noteText y después los muestra a otros miembros del equipo. El campo está pensado para texto normal. Si su contenido se inserta como HTML sin controles adecuados, entradas preparadas para ello pueden inyectar contenido ejecutable. Guardar un comentario en la base de datos propia no lo hace fiable para su posterior presentación. Los valores de sistemas conectados también deben tratarse según dónde se muestren.

Si el comentario solo debe ser texto, la aplicación utiliza una salida de texto adecuada o la presentación segura predeterminada de su framework. Si se permite deliberadamente HTML con formato, hace falta una solución de saneamiento mantenida que defina el contenido permitido.

El contexto de salida determina la protección

MDN y OWASP distinguen el tratamiento de texto, HTML, atributos y otros contextos de salida. Una codificación adecuada para texto HTML normal no protege de forma universal JavaScript o URL. La validación de entradas por sí sola no sustituye a la protección en la salida.

Una Content Security Policy puede limitar adicionalmente qué código se ejecuta. No sustituye ni los puntos de salida seguros ni el saneamiento HTML necesario. El escenario del portal ilustra esta distinción; no describe una prueba de seguridad realizada.

Fuentes