¿Qué es el cross-site scripting (XSS)?
El cross-site scripting (XSS) es un tipo de ataque en el que los delincuentes introducen código malicioso, normalmente JavaScript, en una página web. El código se ejecuta entonces en el navegador de otros visitantes y puede secuestrar sesiones, leer entradas o falsificar contenidos, porque el navegador lo considera parte del sitio legítimo.

XSS: definición y causa
Un sitio web se vuelve vulnerable cuando incorpora sin comprobar a sus páginas entradas de los usuarios, como comentarios, términos de búsqueda o datos de perfil. Si la entrada contiene código de script, el navegador del siguiente visitante lo ejecuta como si formara parte de la página. Así, el código tiene los mismos derechos que el código legítimo de la página.
El XSS figura desde hace años entre las vulnerabilidades más frecuentes de las aplicaciones web y se incluye en el OWASP Top 10 dentro de la categoría Injection. A diferencia de la inyección SQL, el objetivo inmediato no es el servidor, sino los visitantes y los administradores del sitio web.
Los tres tipos de XSS
En el XSS almacenado (stored), el código malicioso se guarda de forma permanente, por ejemplo en un comentario, y afecta a todo el que abra la página. En el XSS reflejado (reflected), está en un enlace manipulado que se envía, por ejemplo, en un correo de phishing. En el XSS basado en DOM, el fallo surge solo por el JavaScript del navegador, que escribe datos en la página de forma insegura.
- Toma de control de sesiones y cuentas de usuario
- Lectura de entradas, como contraseñas o datos de pago
- Presentación de formularios falsos en la página auténtica
- Redirección a sitios maliciosos
- Ataques a administradores a través del back end
Ejemplo práctico: la valoración en la tienda online
Una tienda online permite valoraciones de productos y muestra el texto sin filtrar. Un atacante deja, en lugar de una valoración, un pequeño script. Cuando más tarde un administrador de la tienda abre la valoración en el back end, el script podría capturar su clave de sesión y darle al atacante acceso a la administración.
La tienda se protege codificando las salidas según el contexto, de modo que los scripts aparezcan solo como texto, asegurando las cookies de sesión con los atributos HttpOnly y SameSite y aplicando una política de seguridad de contenidos (CSP) que solo admite fuentes de script autorizadas. El back end sanea además las valoraciones antes de mostrarlas.
Protección, límites y puesta en práctica
La medida más importante es la codificación de salida adecuada al contexto: los datos se escapan antes de mostrarse, de modo que el navegador los trate como texto y no como código. Los frameworks modernos como React lo hacen por defecto, salvo que los desarrolladores lo eludan deliberadamente. La CSP limita el daño si aun así se cuela algo; el HTML permitido, por ejemplo el de los editores de texto, se depura con bibliotecas comprobadas.
Nano Concepts revisa aplicaciones web y tiendas en busca de XSS, corrige fallos en el código y en los plugins y configura cabeceras HTTP relevantes para la seguridad, como la política de seguridad de contenidos. En los proyectos nuevos nos aseguramos desde el principio de que las entradas de los usuarios nunca lleguen a las páginas sin comprobar.
- Mostrar entradas sin comprobar en las páginas, sobre todo en comentarios y campos de búsqueda
- Usar innerHTML o funciones similares con datos de usuarios
- Confiar solo en filtros de entrada en lugar de en la codificación de salida
- Integrar scripts y plugins de terceros sin revisarlos
- Sin política de seguridad de contenidos y con cookies sin proteger
Preguntas frecuentes sobre Cross-site scripting (XSS)
En la inyección SQL se manipula la base de datos del servidor; en el XSS se ejecuta código malicioso en el navegador de los visitantes. Ambos surgen cuando las entradas se reutilizan sin comprobar y ambos pertenecen a la categoría Injection. Las contramedidas difieren: consultas parametrizadas en un caso, codificación de salida en el otro.
Depende de dónde esté el fallo. Si afecta a administradores o a clientes con sesión iniciada, el código malicioso puede secuestrar sesiones o leer entradas. Incluso en páginas sin inicio de sesión puede enviar a los visitantes a sitios maliciosos o mostrar formularios falsos. El riesgo es real y muy evitable.
Con codificación de salida adecuada al contexto, frameworks comprobados, HTML depurado procedente de editores, cookies con HttpOnly y SameSite y una política de seguridad de contenidos. Ayudan además las actualizaciones del CMS y de los plugins y las pruebas de seguridad periódicas, antes de que los atacantes encuentren debilidades.
Una política de seguridad de contenidos (CSP) es una regla HTTP que indica al navegador desde qué fuentes pueden cargarse scripts, imágenes y otros contenidos. Limita el daño del XSS, porque se bloquean los scripts inyectados desde fuentes no permitidas.
Servicios que encajan

Seguridad web
Detectar y cerrar vulnerabilidades en sitios web, tiendas online, portales de clientes y aplicaciones web a medida.
Más información
Análisis de vulnerabilidades de sitios web
Revisión de seguridad de su sitio web o app web según el OWASP Top 10, con lista de fallos priorizada y corrección.
Más información
Seguridad de WordPress
Revisión de seguridad y refuerzo de WordPress: inicios de sesión seguros, plugins verificados, copias de seguridad fiables y ajustes del servidor.
Más informaciónTérminos relacionados
Relevante para estos sectores
Artículos relacionados de la revista

Seguridad web: OWASP Top 10 y checklist pragmática para equipos
La mayoría de las vulnerabilidades siguen patrones conocidos. Con el OWASP Top 10 como guía y una checklist priorizada, cierra las brechas típicas antes de que se conviertan en un problema.
Seguir leyendo
Mantenimiento de software: qué debe cubrir un contrato de mantenimiento
El software nunca está terminado. Qué servicios debe incluir un contrato de mantenimiento, cómo separar mantenimiento, soporte y evolución y qué alcance necesita realmente su software.
Seguir leyendoTracking conforme al RGPD: consentimiento, flujos de datos y confianza
Tracking y protección de datos no se excluyen: qué servicios requieren consentimiento, cómo documentar los flujos de datos y cómo aplicar la técnica para que cumpla lo que promete su política de privacidad.
Seguir leyendo