¿Por qué no debería poner la entrada del usuario en comentarios HTML?

8

La OWASP XSS Prevention Cheat Sheet tiene una lista de lugares donde los datos no confiables nunca deben estar poner:

 <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

Entiendo por qué los datos no se deben colocar en los otros 4 lugares, pero ¿cuál es el peligro de poner comentarios del usuario en comentarios HTML? Pienso que la codificación > sería suficiente para evitar ataques. ¿Hay una manera de ejecutar JavaScript dentro de un comentario HTML? ¿O una forma diferente de salir de los comentarios HTML sin > ?

    
pregunta tim 11.06.2016 - 11:00
fuente

2 respuestas

9

Las entradas relevantes en la HTML5 Security Cheatsheet son:

  • Finalización de los comentarios HTML con un carácter de comilla invertida: html5sec # 133 (IE6, IE8)
  • Inyectar XSS o con un comentario condicional html5sec # 115 (IE más antiguo, modo de peculiaridades de IE)

Además de la entrada del usuario, se puede usar para cambiar este comentario en un comentario condicional (solo IE) y, por lo tanto, cambiar el DOM o bloquear la ejecución del script después del comentario. Esto podría cambiar el comportamiento de la página de manera involuntaria.

    
respondido por el Steffen Ullrich 11.06.2016 - 11:08
fuente
2

Si los datos que no son de confianza pueden ser de todo, podríamos inyectar, por ejemplo, --><script>alert("I just escaped the HTML comment")</script><!-- lo que lo haría aparecer en el código fuente como: <!----><script>alert("I just escaped the HTML comment")</script><!----> (tenga en cuenta los comentarios vacíos)

    
respondido por el Eda190 16.06.2016 - 19:26
fuente

Lea otras preguntas en las etiquetas