Ad esempio, supponiamo che esista un sito Web in cui l'input dell'utente non è correttamente disinfettato, ma questi filtri sono ancora attivi. Qualsiasi cosa digitata viene inserita tra due tag div.
Se l'input è " hello
", viene visualizzato nell'origine come " <div>hello</div>
"
funzionano. Se l'input è " <!--
", si trasformerà in
" <div><!--</div>
", trasformando gran parte dell'HTML nella pagina in un commento, interrompendone una parte.
Tuttavia, i tag dello script sono filtrati. Inserendo " <script>alert('xss')</script>
" restituirai " <div>alert('xss')</div>
", ovviamente non eseguendo alcun javascript.
"javascript:" viene filtrato e trasformato in "nojavascript" se usato come sorgente.
ingresso:
<img src=javascript:alert('hi'); />
uscita:
<img src=nojavascript...alert('hi'); />
Un'altra parte del filtro la protegge da " onload=
" e altri attacchi XSS basati su eventi HTML. Se " onload=alert('xss')
" è l'input, non verrà visualizzato affatto nella sorgente.
Quindi, la mia domanda è: questo sito web sarebbe ancora vulnerabile allo scripting cross-site, o è sicuro a causa del filtro che usa?