Qué son las secuencias de comandos en sitios cruzados (XSS)

Qué son las secuencias de comandos en sitios cruzados (XSS)

Escrito por: Brenda Buckman
Última actualización: 19 de marzo de 2025

Imagen de una calavera hecha con proyección digital

Si alguna vez has creado o trabajado en una aplicación web, sabes que la seguridad es una batalla constante. Los hackers siempre buscan formas de explotar vulnerabilidades, y las secuencias de comandos en sitios cruzados (XSS) son uno de sus trucos favoritos.

A primera vista, XSS puede parecer otra palabra de moda en ciberseguridad, pero créeme, está lejos de serlo. Este ataque puede llevar al robo de credenciales de inicio de sesión, el secuestro de sesión, la alteración no autorizada de sitios web e incluso la propagación de malware. ¿Lo peor? Muchos desarrolladores no se dan cuenta de que sus aplicaciones son vulnerables hasta después de que ocurre un ataque.

En esta publicación, voy a explicar qué es XSS, cómo lo explotan los atacantes y, lo más importante, cómo puedes prevenirlo.

Qué son las secuencias de comandos en sitios cruzados (XSS)

Dicho de forma simple, XSS es una vulnerabilidad que permite a los atacantes inyectar scripts maliciosos en páginas web que ven otros usuarios. Estos scripts se ejecutan dentro del navegador de la víctima, y a menudo roban información sensible como cookies, tokens de sesión o incluso datos de inicio de sesión.

Piénsalo así:

  • Un usuario visita un sitio web, suponiendo que es seguro.
  • Un atacante ha inyectado un script oculto en algún lugar de la página.
  • Ese script se ejecuta en el navegador del usuario, sin que este lo sepa.
  • Listo. El atacante ahora tiene acceso a datos sensibles.

Debido a que los usuarios confían en el sitio web que visitan, sin saberlo dejan que scripts dañinos se ejecuten dentro de sus navegadores. Por eso XSS es tan peligroso.

¿Por qué debería importarte XSS?

Ignorar los XSS no es solo un pequeño descuido de seguridad: puede causar daños graves, entre ellos:

  • Robo de datos – Los hackers pueden extraer credenciales de inicio de sesión, información de pago y datos personales.
  • Secuestro de sesión – Los atacantes pueden tomar el control de las cuentas de los usuarios.
  • La alteración no autorizada de un sitio web – Algunos ataques XSS modifican el contenido de la página, lo que deja en vergüenza a las empresas.
  • Distribución de malware – Los hackers pueden inyectar scripts dañinos que se propagan automáticamente.
  • Pérdida de la confianza de los usuarios – Una brecha de seguridad puede alejar a los clientes.

Es un asunto serio, pero ¿la buena noticia? Puedes protegerte contra esto.

Cómo funcionan los ataques XSS

La mayoría de los ataques XSS siguen un proceso simple de tres pasos:

  1. Inyección: el atacante introduce un script malicioso en el sitio web (a través de campos de entrada, URL o datos almacenados).
  2. Ejecución: el script se ejecuta en el navegador del usuario cuando visita la página comprometida.
  3. Explotación: el atacante roba datos, propaga malware o manipula el contenido del sitio web.

Si tu aplicación web acepta la entrada de usuarios sin la validación adecuada, está en riesgo. Eso significa que cosas como barras de búsqueda, secciones de comentarios e incluso formularios de contacto podrían ser puntos de ataque potenciales.

Tipos de ataques XSS

No todos los ataques XSS funcionan de la misma manera. Estos son los tres tipos principales:

1. XSS reflejado (no persistente)

Esto ocurre cuando un script malicioso se incrusta en una URL o solicitud y luego se refleja de vuelta al usuario. El ataque solo funciona si la víctima hace clic en un enlace específico.

Ejemplo:

Un hacker envía esta URL en un correo de phishing:

PHP-template

http://example.com/search?query=<script>alert('Hacked!')</script>

Si el sitio web no sanitiza correctamente la entrada del usuario, hacer clic en este enlace podría activar el script en el navegador del usuario.

2. XSS almacenado (persistente)

Esto es aún peor. En lugar de depender de que un usuario haga clic en un enlace malicioso, el atacante inyecta un script directamente en la base de datos del sitio web, de modo que se ejecuta cada vez que alguien ve la página infectada.

  • Ejemplo:

Un atacante publica un comentario en un blog:

"¡Excelente publicación! <script>stealCookies()</script>"

Ahora, cada vez que alguien visita esa página, el script se ejecuta y roba sus cookies.

3. XSS basado en DOM

Este ataque ocurre completamente del lado del cliente (en el navegador), lo que significa que explota vulnerabilidades en JavaScript en lugar del servidor. El script se ejecuta de forma dinámica según las interacciones del usuario.

Ejemplo:

Si una página web procesa parámetros de consulta de forma insegura, un atacante puede manipular la URL:

http://site.com/?input=<script>maliciousCode()</script>

Si la página inyecta `input` directamente en el DOM, podría ejecutar código malicioso en el navegador.

Cómo identificar vulnerabilidades XSS

Si estás creando una aplicación web, deberías probar regularmente la existencia de vulnerabilidades XSS. Así es cómo:

Prueba manual: intenta inyectar `<script>alert('XSS')</script>` en los campos de entrada y comprueba si se ejecuta. Si lo hace, tu sitio es vulnerable.

Usa herramientas de seguridad: herramientas como Burp Suite, OWASP ZAP y Nessus pueden escanear tu sitio en busca de vulnerabilidades.

Revisa las herramientas de desarrollador del navegador: abre Chrome DevTools (F12 o cmd+opt+I en Mac) e inspecciona cómo se manejan las entradas del usuario. Busca manipulaciones de JavaScript inseguras o maliciosas.

Buenas prácticas para prevenir XSS

Proteger tu sitio contra XSS requiere una combinación de medidas de seguridad. Estos son algunos pasos clave:

1. Valida y depura la entrada del usuario

  • Acepta solo formatos de entrada esperados (por ejemplo, los campos de correo electrónico solo deberían permitir correos electrónicos).
  • Bloquea caracteres no permitidos como `<script>`.

2. Codifica la salida antes de mostrarla

  • Escapa los caracteres especiales antes de mostrar contenido generado por el usuario.
  • Ejemplo: Convierte `<` en `Lt;` y `>` en `Sgt;`.

3. Usa una política de seguridad de contenido (CSP)

Restringe la ejecución de scripts solo a fuentes confiables.

Ejemplo:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

4. Protege las cookies con las marcas HttpOnly y Secure

  • Evita que JavaScript acceda a las cookies configurando HttpOnly.
  • Usa Secure para asegurarte de que las cookies solo se envíen por HTTPS.

Ejemplo en PHP:

setcookie("sessionID", "randomValue", ["HttpOnly" => true, "Secure" => true]);

5. Aprovecha las bibliotecas y los frameworks de seguridad

  • Usa OWASP ESAPI para un manejo seguro de la entrada.
  • Frameworks como React y Angular escapan la salida automáticamente, lo que reduce el riesgo.

6. Bloquea el JavaScript en línea

  • Si puedes, deshabilita los scripts en línea con encabezados de seguridad:

<meta http-equiv="X-XSS-Protection" content="1; mode=block">

Creación de resiliencia contra ataques de secuencias de comandos en sitios cruzados

Las secuencias de comandos en sitios cruzados (XSS) son una de las vulnerabilidades web más comunes, y no van a desaparecer pronto. ¿La buena noticia? Se pueden prevenir por completo.

Si tomas la seguridad en serio—validando entradas, codificando salidas, aplicando CSP y aprovechando frameworks seguros—puedes proteger a tus usuarios y tu negocio.

Las amenazas cibernéticas evolucionan, pero tus defensas también pueden hacerlo. Mantente a la vanguardia, sigue aprendiendo y haz de la seguridad un hábito.

¿Quieres más información?

Recursos adicionales

Más información sobre Amazon Web Services
Amazon Web Services
Ciberseguridad 101

Aprende los fundamentos de la seguridad en la nube de AWS (cloud), el modelo de responsabilidad compartida, funciones clave como el cifrado y IAM, además de las mejores prácticas para profesionales de ciberseguridad.

Más información sobre Qué es la transformación de la ciberseguridad
Qué es la transformación de la ciberseguridad
Ciberseguridad 101

Descubre qué significa la transformación de la ciberseguridad, por qué es esencial para las organizaciones modernas y cómo implementar una estrategia de seguridad integral.

Más información sobre ¿Qué es la seguridad de las aplicaciones (AppSec)?
¿Qué es la seguridad de las aplicaciones (AppSec)?
Ciberseguridad 101

Descubre qué es la seguridad de las aplicaciones y cómo protege las aplicaciones de vulnerabilidades, resguarda los datos y garantiza el acceso seguro de los usuarios.

Protege lo que importa

Protege endpoints, correo electrónico y empleados con el poder de nuestro SOC 24/7. Prueba Huntress gratis y despliega en minutos para empezar a combatir las amenazas.
Iniciar mi prueba gratuita