No podrá reunir una lista completa de tipos MIME peligrosos.
Si bien es sencillo bloquear text/html
, text/xml
, image/svg+xml
, etc., hay muchos tipos MIME heredados o específicos de proveedores poco conocidos que no son muy conocidos y podrían funcionar en algunos navegadores. Por ejemplo, el tipo MIME application/vnd.wap.xhtml+xml
se entiende como XML en Firefox, mientras que no se activará en Chrome en absoluto. Prueba de concepto:
data:application/vnd.wap.xhtml+xml,<x:script xmlns:x="http://www.w3.org/1999/xhtml">alert(1)</x:script>
Además, hay tipos MIME que no conducen inmediatamente a XSS pero tienen efectos secundarios. Por ejemplo, un atacante podría querer engañar a un usuario para que instale un complemento de Firefox al proporcionar contenido con un tipo MIME application/x-xpinstall
. (Este ataque tendrá algunos obstáculos adicionales, pero entiendes la idea).
Finalmente, los proveedores externos también pueden registrar sus propios tipos MIME personalizados (piense en los applets de Flash con application/x-shockwave-flash
, los applets de JAVA, los reproductores de medios integrados, etc.) algunos de los cuales tienen la capacidad de ejecutar código de script. Será difícil mantenerlos al tanto de tu lista negra.
En conclusión, si está planeando una implementación en la vida real, debería incluir en la lista blanca los tipos MIME inofensivos en lugar de poner en lista negra los peligrosos.