¿Qué nos impide usar una etiqueta antiscript para detener XSS?

2

Soy consciente de varias formas de prevenir los ataques XSS, como el escape y la codificación, que son propensos a problemas, y el uso de una Política de seguridad de contenido que requiere la extracción de todos los scripts. Sin embargo, las preocupaciones nos impiden utilizar una etiqueta html como <antiscript> para evitar que el navegador ejecute cualquier script bajo este elemento en el árbol DOM, ya sea declarado directamente con <script> o como un atributo de etiqueta como onmouseover . dentro de estas etiquetas? Al principio, parece que sería bastante fácil detectar a alguien que intenta salir de este contexto sin scripts porque la etiqueta </antiscript> debería aparecer.

    
pregunta Arcanum 02.09.2018 - 03:24
fuente

1 respuesta

1

No creo que realmente ayude.

Si entiendo correctamente, estás proponiendo un esquema como este:

<antiscript>
    <a>"$user-supplied-input"</a>
</antiscript>

¿correcto?

Entonces, ¿qué me impide salir de esto al proporcionar la entrada:

"</a></antiscript><script>do_something_bad()</script>

para que la fuente de la página sea:

<antiscript>
    <a>""</a></antiscript><script>do_something_bad()</script>"</a>
</antiscript>

La página se analiza, mi <script>do_something_bad()</script> no estará dentro del <antiscript> </antiscript> en el DOM. (el HTML que sigue se romperá, pero dado que el HTML se analiza de arriba abajo, mi carga útil ingresará al DOM, ¿a quién le importa?)

Usted aborda esto en la pregunta:

  

Sería bastante fácil detectar a alguien que intenta salir de este contexto sin scripts porque la etiqueta debería aparecer.

Pero eso significa que bajo ninguna circunstancia la cadena " </antiscript> " puede aparecer como texto en cualquier lugar de Internet. Eso parece ser un problema. ¿Qué pasaría si, por ejemplo, quisiera escribir un blog que describiera cómo usar esta función?

    
respondido por el Mike Ounsworth 02.09.2018 - 03:36
fuente

Lea otras preguntas en las etiquetas