Oggi ho bisogno di demo di XSS basato su DOM e mi sono imbattuto in questa pagina creata per lo stesso scopo esatto.
Mi chiedo perché <img+src+onerror=alert(1)>
funziona ma <script>alert(1)</script>
no?
Oggi ho bisogno di demo di XSS basato su DOM e mi sono imbattuto in questa pagina creata per lo stesso scopo esatto.
Mi chiedo perché <img+src+onerror=alert(1)>
funziona ma <script>alert(1)</script>
no?
La pagina a cui fai riferimento ha il seguente codice:
<p id="p1">Hello, guest!</p>
<script>
...
var username = searchParams.get('name');
...
document.getElementById('p1').innerHTML = 'Hello, ' + username + '!';
La tua aspettativa è che l'impostazione di nome utente su <script>alert(1)</script>
debba risultare in <p id="p1">Hello, <script>alert(1)</script></p>
, che secondo te dovrebbe portare allo script che viene eseguito.
Ma non è questo il caso. La documentazione di Element.innerHTML
spiega perché:
HTML5 specifies that a
<script>
tag inserted with innerHTML should not execute.
Immediatamente prima di questa dichiarazione c'è anche un esempio simile al tuo per illustrare questo.