Qué es XSS (cross-site scripting) y cómo prevenirlo
El XSS es una de las fallas más comunes en sitios web: permite que un atacante haga ejecutar su propio código en el navegador de los visitantes, como si fuera parte de su sitio. Con eso puede robar sesiones, mostrar formularios falsos o redirigir a otra página. En WordPress aparece una y otra vez en plugins vulnerables. Le explicamos qué es, los tipos que existen, cómo funciona un ataque y cómo prevenirlo.
¿Prefiere que lo revisemos nosotros? Diagnóstico gratis, sin claves.
¿Consulta urgente? Escríbanos por WhatsApp al 095 283 123
Qué es XSS
XSS son las siglas de cross-site scripting, «secuencias de comandos en sitios cruzados». Se usa una X en lugar de una C para no confundirlo con CSS, las hojas de estilo.
La falla aparece cuando un sitio toma datos que manda el usuario (lo que escribe en un formulario, un parámetro de la dirección, un comentario) y los muestra en la página sin limpiarlos. Si esos datos contienen código JavaScript, el navegador del visitante lo ejecuta como si viniera del sitio.
Para el navegador no hay diferencia entre el código legítimo de su sitio y el que inyectó el atacante: los dos corren con los mismos permisos. Por eso el XSS forma parte de la categoría «Inyección» del OWASP Top 10.
Qué puede hacer un atacante con XSS
Robar sesiones
Si las cookies de sesión no están protegidas, el script las copia y el atacante entra como el usuario, incluso como administrador.
Mostrar formularios falsos
Un cuadro de «su sesión expiró, vuelva a ingresar su clave» dentro de su propio sitio.
Redirigir a otro sitio
A páginas de phishing, estafas o malware.
Hacer acciones en nombre del usuario
Si la víctima es un administrador de WordPress, el script puede crear un usuario nuevo o instalar un plugin.
Robar datos del checkout
En una tienda, capturar lo que el cliente escribe en el formulario de pago.
Seguridad en WooCommerce
¿Quiere saber qué tiene abierto su sitio?
Lo revisamos desde afuera, sin claves y sin instalar nada. Si no encontramos nada relevante, se lo decimos igual.
Los tres tipos de XSS
| Tipo | Dónde queda el código | Cómo llega a la víctima | Riesgo |
|---|---|---|---|
| Reflejado | En la dirección o en un formulario; no se guarda | La víctima hace clic en un enlace preparado | Medio: requiere engañar a cada víctima |
| Almacenado | Se guarda en la base de datos (un comentario, un perfil, un pedido) | Cualquiera que vea esa página | Alto: afecta a todos los visitantes, incluidos los administradores |
| Basado en DOM | El código JavaScript del propio sitio lo inserta en la página | Un enlace preparado; el servidor ni se entera | Medio a alto, y más difícil de detectar |
Cómo funciona un ataque XSS, paso a paso
- 01
El atacante encuentra un campo que no se limpia
Un buscador, un formulario de contacto, un campo de un plugin o un parámetro de la dirección que se muestra tal cual en la página.
- 02
Prueba con un script inofensivo
Escribe en el campo un fragmento de código que muestra una alerta. Si la alerta aparece, la falla existe.
- 03
Arma el ataque real
Reemplaza la alerta por un script que manda las cookies a su servidor, muestra un formulario falso o redirige a otra página.
- 04
Lo hace llegar a la víctima
En el XSS reflejado, manda el enlace por correo o mensaje. En el almacenado, lo deja guardado (por ejemplo, en un comentario o en el nombre de un pedido) y espera que un administrador abra esa pantalla.
- 05
El navegador de la víctima ejecuta el código
Con los mismos permisos que su sitio. Si la víctima es un administrador, el atacante puede tomar el control del sitio.
XSS en WordPress
En WordPress, el XSS rara vez está en el núcleo: aparece en plugins y temas, sobre todo en formularios, buscadores, campos personalizados y paneles de administración. Es una de las fallas más publicadas en el ecosistema, y muchas se explotan en masa poco después de hacerse públicas.
XSS almacenado en plugins de formularios o comentarios
El atacante deja el código en un campo que después un administrador ve en el panel.
XSS reflejado en parámetros de búsqueda o filtros
Más fácil de encontrar con escáneres automáticos.
Fallas que requieren estar registrado
En sitios con registro abierto (tiendas, membresías), cualquier cliente puede ser el atacante.
La defensa principal en WordPress no es programar: es mantener los plugins actualizados y no instalar más de los necesarios. → Actualizar WordPress sin romper el sitio
Cómo prevenir el XSS
- 01
Escapar todo lo que se muestra
Convertir los caracteres especiales (
<,>,",') en texto inofensivo antes de mostrarlos, según el contexto: HTML, atributos, JavaScript o direcciones. En WordPress existen funciones para cada caso, comoesc_html(),esc_attr()yesc_url(). - 02
Validar y limpiar lo que entra
Aceptar solo el formato esperado (un número, un correo, una fecha) y limpiar el resto, por ejemplo con
sanitize_text_field()en WordPress. - 03
Usar una política de seguridad de contenidos (CSP)
Un encabezado que le dice al navegador desde qué dominios puede cargar scripts. Aunque alguien inyecte código, el navegador no lo ejecuta. Es la defensa más potente y la más delicada de configurar.
- 04
Proteger las cookies de sesión
Con el atributo
HttpOnly, las cookies no son accesibles desde JavaScript, y un XSS no puede robarlas. - 05
Poner un firewall delante
Un WAF bloquea los intentos de XSS conocidos y gana tiempo mientras se corrige la falla. → Qué es un WAF
- 06
Probar
Los escáneres encuentran muchos XSS reflejados; los almacenados y los basados en DOM suelen requerir pruebas manuales. → Pentest web
Cómo saber si su sitio tiene un XSS
Revise si sus plugins tienen fallas publicadas
Muchas de las vulnerabilidades de plugins son XSS.
Análisis de vulnerabilidadesMire el código de las páginas
En busca de scripts que no reconoce, sobre todo en comentarios, perfiles o pedidos.
Para aplicaciones propias, un pentest
Con pruebas manuales en cada campo.
Si ya encontró scripts inyectados en su sitio, el problema es más grande que un XSS: puede haber una infección. → Limpieza de sitio hackeado
Servicios relacionados
Preguntas frecuentes
¿Qué es XSS en palabras simples?
Una falla que permite a un atacante hacer ejecutar su propio código en el navegador de los visitantes de un sitio, como si fuera parte del sitio.
¿Qué significa XSS?
Cross-site scripting, secuencias de comandos en sitios cruzados. Se usa la X para no confundirlo con CSS.
¿Cuál es el tipo de XSS más peligroso?
El almacenado, porque queda guardado en el sitio y afecta a todos los que ven la página, incluidos los administradores.
¿El XSS puede afectar a WordPress?
Sí, sobre todo a través de plugins y temas. La defensa principal es mantenerlos actualizados y usar pocos.
¿Cómo se previene el XSS?
Escapando todo lo que se muestra, validando lo que entra, protegiendo las cookies con HttpOnly y usando una política de seguridad de contenidos.
Más sobre ataques web
Tipos de malware que afectan a sitios web (y cómo reconocerlos)
Cuando se habla de "malware" se piensa en virus que infectan una computadora. Pero los sitios web tienen su propio catálogo de…
LeerInyección SQL: qué es, ejemplos y cómo evitarla
La inyección SQL es una de las fallas más viejas de la web y sigue siendo una de las más graves: permite…
LeerOWASP Top 10 (2025) explicado con ejemplos
El OWASP Top 10 es la lista de referencia de los riesgos de seguridad más críticos en aplicaciones web. La usan desarrolladores,…
Leer¿Sus plugins tienen fallas publicadas?
Lo revisamos desde afuera, sin claves, y le decimos cuáles conviene actualizar primero.
¿Consulta urgente? WhatsApp 095 283 123