您将无法汇总危险 MIME 类型的完整列表。
虽然阻止text/html
、text/xml
、image/svg+xml
等很简单,但有许多不为人知的遗留或特定于供应商的 MIME 类型并不广为人知,并且可能在某些浏览器中工作。例如,MIME 类型application/vnd.wap.xhtml+xml
在 Firefox 中被理解为 XML,而在 Chrome 中根本不会触发。概念证明:
data:application/vnd.wap.xhtml+xml,<x:script xmlns:x="http://www.w3.org/1999/xhtml">alert(1)</x:script>
此外,还有一些 MIME 类型不会立即导致 XSS,但会产生副作用。例如,攻击者可能想通过提供具有application/x-xpinstall
MIME 类型的内容来欺骗用户安装 Firefox 插件。(这种攻击会有一些额外的障碍,但你明白了。)
最后,第三方供应商也可能注册他们自己的自定义 MIME 类型(想想 Flash 小程序application/x-shockwave-flash
,JAVA 小程序,嵌入式媒体播放器等),其中一些具有执行脚本代码的能力。很难在黑名单上跟踪这些内容。
总之 - 如果您正在计划实际实施,您应该将无害的 MIME 类型列入白名单,而不是将危险的类型列入黑名单。