Perché non dovrei inserire l'input dell'utente nei commenti HTML?

8

Il foglio Cheat di prevenzione XSS OWASP contiene un elenco di posizioni in cui i dati non attendibili non dovrebbero mai essere mettere:

 <script>...NEVER PUT UNTRUSTED DATA HERE...</script>   directly in a script

 <!--...NEVER PUT UNTRUSTED DATA HERE...-->             inside an HTML comment

 <div ...NEVER PUT UNTRUSTED DATA HERE...=test />       in an attribute name

 <NEVER PUT UNTRUSTED DATA HERE... href="/test" />   in a tag name

 <style>...NEVER PUT UNTRUSTED DATA HERE...</style>   directly in CSS

Capisco perché i dati non dovrebbero essere inseriti negli altri 4 posti, ma qual è il rischio di inserire l'input dell'utente nei commenti HTML? Penserei che codificare > sarebbe sufficiente per prevenire eventuali attacchi. C'è un modo per eseguire JavaScript all'interno di un commento HTML? O un modo diverso per uscire dai commenti HTML senza > ?

    
posta tim 11.06.2016 - 11:00
fonte

2 risposte

9

Le voci pertinenti nel foglio di sicurezza HTML5 sono:

  • Conclusione dei commenti HTML con un carattere di apice: html5sec # 133 (IE6, IE8)
  • Iniezione di XSS o con un commento condizionale html5sec # 115 (IE più vecchio, modalità strane di IE)

Oltre a quell'input dell'utente potrebbe essere usato per cambiare questo commento in un commento condizionale (solo IE) e quindi modificare il DOM o bloccare l'esecuzione dello script dopo il commento. Questo potrebbe cambiare il comportamento della pagina in modo non intenzionale.

    
risposta data 11.06.2016 - 11:08
fonte
2

Se i dati non attendibili possono essere tutto, possiamo iniettare ad esempio --><script>alert("I just escaped the HTML comment")</script><!-- che lo farebbe apparire nel codice sorgente come: <!----><script>alert("I just escaped the HTML comment")</script><!----> (nota i commenti vuoti)

    
risposta data 16.06.2016 - 19:26
fonte

Leggi altre domande sui tag