Content-Type
es solo una sugerencia de los datos proporcionados al receptor (consumidor). Esto significa que el receptor puede o no tomar medidas en función de ese encabezado.
Un navegador típico leerá el encabezado de tipo de contenido para representar el contenido de la mejor manera posible (JSON como árbol, flujo de audio como reproductor, etc.). Intente enviar una cadena JSON a un navegador con Content-Type: application/json
y sin. Misma carga recibida, diferente presentación.
Una aplicación genérica hará lo que quiera con el contenido. En particular, puede decidir mostrarlo (o partes de) como HTML sin formato. En ese caso, si su carga útil incluye JavaScript formateado correctamente, se ejecutará.
Esto no es diferente del endurecimiento clásico de la aplicación. La regla de oro es nunca confíes en nada de lo que recibas . Esto incluye no solo el cuerpo de su consulta HTTP sino también los encabezados.
Como nota al margen, el contenido malicioso puede llegar a sus datos no solo a través de lo que recibe y procesa. Alguien también puede modificar, por ejemplo, los datos que se almacenan en su base de datos directamente en la base de datos. Por lo tanto, la necesidad absoluta de escapar de lo que se envía al destinatario, que es en última instancia, cómo se realizan los ataques XSS (y similares).