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?