在浏览器中即时进行 HTML 实体编码与解码。
编码和解码 HTML 实体,以便在标记、模板和用户生成的内容管道之间安全地移动文本,而不会意外渲染或损坏字符输出。
它将保留的 HTML 字符转换为实体形式,以便安全嵌入到标记上下文中。
它将实体字符串解码回可读检查日志、有效负载或存储内容时的文本。
当内容经过多个渲染层和转义规则时,它有助于防止输出混乱。
编码输入
<div class="note">Use <strong>safe</strong> output.</div>
解码输入
<script>alert('x')</script>混合实体输入
Tom & Jerry <3 标记
编码输出
<div class="note">使用<strong>安全</strong>输出。</div>
解码输出
<script>alert('x')</script>复习笔记
在正确的渲染边界应用一次转义以避免双重编码。
界面中出现双重编码输出
跟踪转义的应用位置并删除重复的编码步骤。
解码的字符串意外执行
切勿将不受信任的内容直接解码到可执行的 HTML 上下文中。
字符集不匹配
确保实体转换前后的 UTF-8 处理。
部分实体解码
验证完整的实体语法并避免截断输入。
HTML 编码/解码 应作为交付流程中的快速校验步骤,在提交、发布和交接前都建议执行一次。
何时应该对 HTML 实体进行编码?
将不受信任的文本插入 HTML 输出上下文时进行编码。
解码总是安全的吗?
否。仔细解码并避免在未经清理的情况下渲染已解码的不受信任的内容。
如何避免双重编码?
在堆栈中定义一个转义边界并保持一致。
这本身可以防止 XSS 吗?
它有帮助,但完整的 XSS 防御也需要适当的清理和上下文感知转义。