He leído en varios lugares puntos de vista contradictorios sobre lo que podría considerarse un XSS basado en DOM. Parece que la definición original dice que es una forma de XSS donde la carga útil se origina exclusivamente desde dentro del navegador, pero algunas personas también lo ven como una forma de XSS donde la carga útil no necesariamente se origina desde dentro del navegador, pero se usa para modificar el DOM.
La segunda vista es lo que me confunde. ¿Qué significa exactamente que la carga útil se utiliza para modificar el DOM? La página OWASP que describe DOM XSS , da un ejemplo que, para mí, parece ser el mismo que XSS reflejado.
Dice:
Se puede realizar un ataque XSS basado en DOM contra esta página enviando la siguiente URL a una víctima: %código%. Cuando la víctima hace clic en este enlace, el navegador envía una solicitud para:
http://www.some.site/page.html?default=<script>alert(document.cookie)</script>
. El servidor responde con la página que contiene el código Javascript anterior.El código de JavaScript original simplemente hace eco en la página (DOM) en tiempo de ejecución. El navegador luego muestra la página resultante y ejecuta la secuencia de comandos del atacante:
/page.html?default=<script>alert(document.cookie)</script>
Dado que la carga útil va del navegador de la víctima al servidor y regresa al navegador, ¿cómo no se refleja esto en XSS?
¿Debo interpretar esto como Reflected XSS significa poder inyectar alert(document.cookie)
tags en un contexto HTML, y DOM basado en DOM significa poder inyectar una carga útil dentro de un <script>
ya existente?