Estoy aprendiendo sobre XSS y estoy tratando de entender por qué el HTML que se agrega al DOM está activando la vulnerabilidad de XSS.
La aplicación dibujará una superposición modal para un formulario (bootstrap) y agregará HTML (con escape y sin escape) a esa parte del documento DOM. Obtiene los datos de una solicitud al servidor, que escapa automáticamente a cualquier entrada de usuario que contenga HTML. A continuación se muestra el código que está causando la vulnerabilidad.
$('.update_button').live('click',function(){
$('#name').modal()
var id=$(this).attr('data-id');
$('#form_holder').hide()
$('#form_holder_loading').show()
$.ajax({
url:'/some/path/',
data:'id='+id,
dataType:'json',
success:function(data){
// data is an HTML string with HTML entered by the user encoded
// such that any HTML characters are replaced with their entity
// e.g. '<' becomes '<'
$('#user_form_holder_loading').hide()
$('#user_form_holder').empty().html(data.form)
$('#user_form_holder').show()
}
});
});