Non sarai in grado di assemblare un elenco completo di tipi MIME pericolosi.
Mentre è semplice bloccare text/html
, text/xml
, image/svg+xml
, ecc., ci sono molti tipi MIME obsoleti o specifici del fornitore che non sono ampiamente conosciuti e potrebbero funzionare in alcuni browser. Ad esempio, il tipo MIME application/vnd.wap.xhtml+xml
è inteso come XML in Firefox mentre non si attiva affatto in Chrome. Prova del concetto:
data:application/vnd.wap.xhtml+xml,<x:script xmlns:x="http://www.w3.org/1999/xhtml">alert(1)</x:script>
Inoltre, ci sono tipi MIME che non portano immediatamente a XSS ma hanno effetti collaterali. Ad esempio, un utente malintenzionato potrebbe voler indurre un utente a installare un plug-in di Firefox fornendo contenuto con un tipo MIME application/x-xpinstall
. (Questo attacco avrà alcuni ostacoli aggiuntivi, ma ti viene l'idea.)
Infine, i fornitori di terze parti potrebbero anche registrare i propri tipi MIME personalizzati (pensare applet Flash con application/x-shockwave-flash
, applet JAVA, lettori multimediali incorporati, ecc.) alcuni dei quali hanno la capacità di eseguire codice script. Sarà difficile tenerne traccia sulla tua lista nera.
In conclusione, se stai pianificando un'implementazione reale, dovresti autorizzare i tipi MIME innocui invece di mettere in blacklist quelli pericolosi.