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

AsS*_*iDe 3 html security xss character-encoding web

我在某处读到声明字符集是一种很好的做法

 <meta charset="utf-8">
Run Code Online (Sandbox Code Playgroud)

以防止严重的安全风险。

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

Sil*_*Fox 5

有一类 XSS 称为UTF-7 XSS

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

+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-
Run Code Online (Sandbox Code Playgroud)

并让它由浏览器呈现和解释为

<script>alert(document.location)</script>
Run Code Online (Sandbox Code Playgroud)

. 旧版本的 Internet Explorer 会自动检测字符集。因此,如果在响应标头或元标记中未指定字符集,则诸如+ADw“欺骗”Internet Explorer 之类的序列的输出使用 UTF-7 呈现页面,从而执行任何此类注入的脚本。这导致了 XSS 漏洞。