OWASP cita il seguente esempio di codice vulnerabile a un attacco XSS basato su 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>
E dicono che può essere attaccato con il seguente URL:
http://www.some.site/page.html?default=<script>alert(document.cookie)</script>
Questo mi rende ferito se il browser Web esegue la valutazione di JavaScript due volte? Ad esempio, esegue prima document.write
e quindi attiva il codice nell'output visualizzato di seguito, quindi lo esegue di nuovo per eseguire lo script della casella di avviso? Come vengono avviati i parser HTML e JavaScript: paralleli / sequenziali / dall'alto verso il basso / dall'alto verso il basso? Qual è l'ordine che seguono?
Select your language:
<select>
<OPTION value=1><script>alert(document.cookie)</script></OPTION>
<OPTION value=2>English</OPTION>
</select>