Interpretazione di stringa JavaScript inline di Chrome

2

Se hai un file HTML che contiene il seguente codice:

   <!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>

quando lo si apre in un browser, incorpora (?) l'avviso "xss".

  • Questo comportamento normale per i browser (nel mio caso l'ultimo di Chrome) è interpretare le stringhe JavaScript come tag validi?
posta Awake Zoldiek 31.12.2013 - 00:27
fonte

1 risposta

3

Sì, è normale.

HTML viene analizzato per primo, poi JavaScript. Quindi, dopo aver incontrato un tag di inizio <script> , il browser cercherà il tag di chiusura </script> . Quando viene trovato, la stringa raccolta verrà analizzata come uno script se il tipo (di solito e di default su JavaScript) viene riconosciuto.

Se utilizzi l'ispettore DOM (F12 o fai clic con il pulsante destro del mouse su > Inspect Element), vedrai la seguente struttura. Nella console JavaScript, vedrai anche che si è verificato un errore di script (la prima stringa non è terminata).

Il terzo tag </script> non è visibile nello screenshot, perché il parser DOM non ha trovato un tag di inizio corrispondente. Quindi è omesso.

    
risposta data 31.12.2013 - 00:45
fonte

Leggi altre domande sui tag