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.
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
Términos relacionados
- FrontendEl frontend es la interfaz que utilizan las personas. La información útil del navegador no sustituye los controles definitivos del servidor.
- JavaScriptJavaScript es un lenguaje para la lógica de aplicaciones, dentro y fuera del navegador. Su función difiere de HTML y CSS.
- HTMLHTML describe la estructura y el significado del contenido web. Identifica elementos como encabezados, tablas y campos de entrada.
- Minimización de datosLa minimización limita los datos personales a lo adecuado, pertinente y necesario para una finalidad definida.
- Política de conservación de datosUna política de conservación define la finalidad, el inicio, la duración y el fin del almacenamiento. Los trabajos de borrado y las copias requieren medidas técnicas.
- Cifrado de sobreEl cifrado de sobre separa la clave de datos de la que la protege. El archivo cifrado y su clave de datos envuelta deben gestionarse juntos.
Su proyecto con ASES
Descríbanos su proyecto. Le responderemos con una primera valoración.