and it is rendered as HTML, the script executes. Entity encoding converts < to < making it render as text, preventing script execution." } }, { "@type": "Question", "name": "When should I use & versus & in HTML?", "acceptedAnswer": { "@type": "Answer", "text": "In HTML attributes and content, & must be encoded as & whenever it is not part of an HTML entity. Unencoded & in HTML is a parsing error. In URLs within href attributes, & must also be encoded as & to be valid HTML (though browsers are forgiving)." } }, { "@type": "Question", "name": "Does HTML entity encoding protect against SQL injection?", "acceptedAnswer": { "@type": "Answer", "text": "No. HTML entity encoding only protects against HTML injection (XSS). For SQL injection prevention, use parameterized queries or prepared statements in your database layer. These are separate attack vectors requiring different defenses — never rely on HTML encoding to prevent SQL injection." } } ] }
Skip to main content
CheckTown
转换工具

HTML 实体编码:防范 XSS 并正确显示特殊字符

发布于 阅读约 5 分钟
本文目录

什么是 HTML 实体?

HTML 实体是一些特殊代码,用于表示在 HTML 中具有特殊含义或无法直接输入的字符。例如,&lt; 是 < 字符(小于号)的 HTML 实体,否则该字符会被解析为 HTML 标签的开始。

实体可以是命名形式(&lt;、&amp;、&copy;)或数字形式(&#60;、&#38;)。命名实体可读性更强;而数字实体适用于任何 Unicode 字符,即使该字符没有对应的命名实体也能表示。

HTML 实体编码的工作原理

编码器会扫描文本中需要转义的字符,并将它们替换为对应的实体。

  • 关键转义——< > & " ' 始终会被转义,以防止 HTML 注入和 XSS 攻击
  • 扩展转义——可选择将所有非 ASCII 字符编码为数字实体
  • 解码模式——将实体编码后的 HTML 还原为纯文本,便于查看

免费试用 —— 无需注册

编码 HTML 实体 →

何时使用 HTML 实体编码

HTML 实体编码对于安全性以及在网页中显示特殊字符都至关重要。

  • 用户内容展示——在 HTML 中渲染用户生成的内容之前,务必先进行编码,以防范 XSS 攻击
  • 邮件模板——对 HTML 邮件模板中的特殊字符进行编码,确保正确渲染
  • 文档——在 HTML 文档中转义代码示例,使尖括号能够正确显示

常见问题解答

什么是 XSS,实体编码如何防范它?

跨站脚本(XSS)是一种攻击方式,攻击者将恶意脚本注入到其他用户浏览的网页中。如果某个用户提交 <script>alert('xss')</script> 并被作为 HTML 渲染,该脚本就会执行。实体编码会将 < 转换为 &lt;,使其以文本形式呈现,从而阻止脚本执行。

在 HTML 中,我应该在什么时候使用 &amp; 而不是 &?

在 HTML 属性和内容中,只要 & 不是某个 HTML 实体的组成部分,就必须编码为 &amp;。未经编码的 & 在 HTML 中属于解析错误。在 href 属性内的 URL 中,& 同样必须编码为 &amp; 才符合有效的 HTML 规范(尽管浏览器通常比较宽容)。

HTML 实体编码能防范 SQL 注入吗?

不能。HTML 实体编码只能防范 HTML 注入(XSS)。要防范 SQL 注入,应在数据库层使用参数化查询或预处理语句。这是两种不同的攻击方式,需要采用不同的防御手段——切勿依赖 HTML 编码来防范 SQL 注入。

相关工具