Una llamada típica ajax:
$.ajax({
url: "http://mywebsite/script?param=" + $("#field").val(),
dataType: "jsonp",
success: function(response) {
$("#id").html(response);
},
});
envía un parámetro. El parámetro se filtra y se desinfecta en el lado del servidor. El servidor devuelve una respuesta de texto simple que se utiliza para mostrarse en la página HTML. Sin embargo, es posible interceptar la respuesta e incluir una etiqueta. Debido a que el código usa $ ("# id"). Html (respuesta) para mostrar la respuesta, se ejecutará la respuesta modificada, incluido el contenido.
Como esto ocurre solo cuando la respuesta del servidor es manipulada y antes de mostrarse en el cliente, ¿es esto vulnerable a XSS? ¿Cómo puede ser explotado?
Como método preventivo es mejor usar $ ("# id"). text (respuesta); en lugar de $ ("# id"). html (respuesta) para garantizar que la cadena de respuesta, incluso cuando se intercepta, se muestre como texto?