Sto imparando su XSS e sto cercando di capire perché il codice HTML di escape aggiunto al DOM stia attivando la vulnerabilità XSS.
L'applicazione disegnerà un overlay modale per un modulo (bootstrap) e aggiungerà HTML (sia con escape sia senza escape) a quella porzione del documento DOM. Ottiene i dati da una richiesta al server che ignora automaticamente qualsiasi input utente che contiene HTML. Di seguito è riportato il codice che causa la vulnerabilità.
$('.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()
}
});
});