Sto cercando di capire come funziona XSS, e ho urtato i giochi XSS di Google ( link ).
Il livello 1 è facilmente risolvibile con l'XSS più comune ( <script>alert(0)</script>
). Tuttavia, se lo provi al livello 2 non funziona. È risolvibile caricare un img con il codice di avviso all'interno di un attributo onerror:
. Tuttavia, sto cercando di capire come filtra i tag dello script e, dopo averli inseriti, li vedo nei server con la risposta ESATTAMENTE al modo in cui li ho immessi (ma senza messaggi di avviso). A quanto ho capito, se il browser vede un <script>alert(0)</script>
, lo esegue sempre. Tutte le soluzioni per XSS che conosco implicano il filtraggio del contenuto prima di visualizzarlo.
Quindi le mie domande sono: in che modo Google impedisce il funzionamento dell'XSS e in quali condizioni un browser potrebbe visualizzare il codice HTML con <script>alert(0)</script>
e non eseguirlo?
Modifica: la prima domanda era un duplicato e la risposta è inserendo il contenuto in un innerHTML. Tuttavia, rimane la seconda domanda, c'è un altro modo per implementarlo?