¿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?

Respuestas a la pregunta(4)

Su respuesta a la pregunta