HTML 实体编码与 XSS 转义
为什么要把 < > & 转成实体,如何用 ToolBox 做 HTML 实体编解码与基础 XSS 防护。
为什么需要实体编码
在 HTML 中直接输出 会被浏览器当作标签/脚本执行,造成 XSS。把 < 转成 <、> 转成 >、& 转成 &,可让特殊字符「只显示不执行」。
实体 vs 字符引用
< 是命名实体,< 是十进制数字引用,< 是十六进制;三者等价,命名实体更易读。
在 ToolBox 中使用
粘贴文本点击编码即可获得实体化结果,适合回填到模板/富文本前做转义;解码则把实体还原为原字符。
XSS 防护的边界
实体编码只是输出层手段之一,不能替代参数化查询、CSP、输入校验等综合防护;对 URL、属性、JS 上下文要分别处理。
常见问题
- 属性值里也要转义引号吗?
- 要。放在双引号属性中的 " 应转成 ",单引号属性同理转 ',避免提前闭合属性。
- 转义后还能正常显示吗?
- 能。浏览器渲染时会把实体还原为对应字符显示,仅源码层面是转义形态。
- 仅做 HTML 转义够防 XSS 吗?
- 对 HTML 正文足够;但若内容进入 URL、on* 事件或 JS 字符串,需要对应场景的编码,单一手段并不万能。