¿Es realmente inseguro construir cadenas HTML en Javascript?
La compañía que aloja nuestro sitio revisa nuestro código antes de la implementación; recientemente nos dijeron esto:
Las cadenas HTML nunca deben manipularse directamente, ya que eso nos abre a posibles agujeros XSS. En su lugar, use siempre una api DOM para crear elementos ... que pueden ser jQuery o las apis DOM directas.
Por ejemplo, en lugar de
this.html.push( '<a class="quiz-au" data-src="' + this.au + '"><span class="quiz-au-icon"></span>Click to play</a>' );
Nos dicen que hagamos
var quizAuLink = $( 'a' );
quizAuLink.addClass( 'quiz-au' );
quizAuLink.data( 'src', this.au );
quizAu.text( 'Click to play' );
quizAu.prepend( '<span class="quiz-au-icon"></span>' );
¿Es esto realmente cierto? ¿Alguien puede darnos un ejemplo de un ataque XSS que podría explotar una cadena HTML como la primera?