OWASP menciona el siguiente ejemplo de código vulnerable a un ataque XSS basado en DOM:
Select your language:
<select><script>
document.write("<OPTION value=1>"+document.location.href.substring(document.location.href.indexOf("default=")+8)+"</OPTION>");
document.write("<OPTION value=2>English</OPTION>");
</script></select>
Y dicen que se puede atacar con la siguiente URL:
http://www.some.site/page.html?default=<script>alert(document.cookie)</script>
¿Esto me hace más extraño si el navegador web realiza una evaluación de JavaScript dos veces? Es decir, ¿se ejecuta primero el document.write
y luego convierte el código en la salida que se muestra a continuación, y luego lo ejecuta nuevamente para ejecutar el script del cuadro de alerta? ¿Cómo se activan los analizadores HTML y JavaScript - paralelo / secuencial / arriba abajo / abajo arriba? ¿Cuál es el orden que siguen?
Select your language:
<select>
<OPTION value=1><script>alert(document.cookie)</script></OPTION>
<OPTION value=2>English</OPTION>
</select>