没有 <meta chartset=<<"any-encoding">> /> 标签的安全漏洞?

Security Vulnerabilities without <meta chartset=<<"any-encoding">> /> tag?

我在某处读到声明字符集是个好习惯

 <meta charset="utf-8">

保护您的文档免受严重的安全风险。

如果有人不在 html 文档中定义字符集会有什么风险?

有一个 class 的 XSS,称为 UTF-7 XSS

在此编码下,+ADw- 呈现为 <+AD4- 呈现为 >。这使得攻击者可以注入

+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-

并由浏览器呈现和解释为

<script>alert(document.location)</script>

。 旧版本的 Internet Explorer 会自动检测字符集。因此,如果在响应 header 或元标记中未指定字符集,则 +ADw "trick" 等序列的输出 Internet Explorer 使用 UTF-7 呈现页面,从而进行任何此类注入脚本执行。这就产生了XSS漏洞。