Por ejemplo, supongamos que hay un sitio web donde la entrada del usuario no está correctamente desinfectada, pero estos filtros aún están activos. Cualquier cosa escrita se inserta entre dos etiquetas div.
Si la entrada es " hello
", se muestra en la fuente como " <div>hello</div>
"
Las etiquetas también funcionan. Si la entrada es " <!--
", entonces se convertiría en
" <div><!--</div>
", convirtiendo gran parte del HTML de la página en un comentario, rompiendo parte de él.
Sin embargo, las etiquetas de script se filtran. Ingresando " <script>alert('xss')</script>
" devolverá " <div>alert('xss')</div>
", obviamente no ejecutando ningún javascript.
"javascript:" se filtra y se convierte en "nojavascript" si se usa como fuente.
entrada:
<img src=javascript:alert('hi'); />
salida:
<img src=nojavascript...alert('hi'); />
Otra parte del filtro lo protege de " onload=
" y otros ataques XSS basados en eventos HTML. Si " onload=alert('xss')
" es la entrada, no se mostrará en absoluto en la fuente.
Entonces, mi pregunta es, ¿este sitio web aún sería vulnerable a los scripts entre sitios o es seguro debido al filtro que utiliza?