Una tipica chiamata ajax:
$.ajax({
url: "http://mywebsite/script?param=" + $("#field").val(),
dataType: "jsonp",
success: function(response) {
$("#id").html(response);
},
});
invia un parametro. Il parametro viene filtrato e disinfettato sul lato server. Il server restituisce una semplice risposta di testo che viene utilizzata per essere visualizzata nella pagina HTML. Tuttavia è possibile intercettare la risposta e includere il tag. Poiché il codice utilizza $ ("# id"). Html (risposta) per visualizzare la risposta, verrà eseguita la risposta modificata, incluso il contenuto.
Poiché ciò si verifica solo quando la risposta del server viene manipolata e prima visualizzata sul client, è vulnerabile a XSS? Come può essere sfruttato?
Come metodo preventivo è meglio usare $ ("# id"). text (response); invece di $ ("# id"). html (risposta) per garantire che la stringa di risposta, anche se intercettata, venga visualizzata come testo?