Interpreatación de cadenas de JavaScript en línea de Chrome

2

Si tiene un archivo HTML que contiene el siguiente código:

   <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <script type="text/javascript">
            var a = '</script><script>alert("xss")</script>'
        </script>
    </body>
    </html>

al abrirlo en un navegador, de forma incorrecta (?) alertará "xss".

  • ¿Este comportamiento normal de los navegadores (en mi caso, el Chrome más reciente) interpreta las cadenas de JavaScript como etiquetas válidas?
pregunta Awake Zoldiek 31.12.2013 - 00:27
fuente

1 respuesta

3

Sí, es normal.

HTML se analiza primero, luego JavaScript. Entonces, después de encontrar una etiqueta de inicio <script> , el navegador buscará la etiqueta de cierre </script> . Cuando se encuentre, la cadena recopilada se analizará como una secuencia de comandos si se reconoce el tipo (generalmente y por defecto a JavaScript).

Si usa el inspector DOM (F12, o haga clic con el botón derecho - > Inspeccionar elemento), verá el siguiente árbol. En la consola de JavaScript, también verás que se ha producido un error de secuencia de comandos (la primera cadena no se termina).

La tercera etiqueta </script> no está visible en la captura de pantalla, porque el analizador DOM no encontró una etiqueta de inicio correspondiente. Así que se omite.

    
respondido por el Rob W 31.12.2013 - 00:45
fuente

Lea otras preguntas en las etiquetas