← 中文资源

简体中文版本

HTML 转义与输入净化

转义 HTML 特殊字符并剥离危险标签,防止服务端渲染模板中的 XSS。

阅读英文原文

示例说明

转义 HTML 特殊字符并剥离危险标签,防止服务端渲染模板中的 XSS。本示例属于安全边界场景,提供可直接复制使用的javascript代码片段,附带边界条件与使用注意事项。

技术要点

  • escapeHtml 转义五个特殊字符为实体
  • sanitizeHtml 先全转义再选择性恢复
  • 先转义再恢复比先解析更安全

代码解读

上述代码实现了HTML 转义与输入净化的核心逻辑。转义 HTML 特殊字符并剥离危险标签,防止服务端渲染模板中的 XSS。代码中包含输入校验、核心算法和结果返回三个部分。关键在于正确处理边界情况,例如空输入、非法参数和并发场景。escapeHtml 转义五个特殊字符为实体,sanitizeHtml 先全转义再选择性恢复。这些设计确保代码在生产环境中的健壮性。

使用建议

在实际项目中使用本示例时,建议先理解HTML 转义与输入净化的适用场景与限制条件。先转义再恢复比先解析更安全。根据具体业务需求调整参数配置,并编写单元测试覆盖正常路径与边界情况。本代码片段可直接集成到现有项目中,或作为参考实现自行扩展。

代码示例

export function escapeHtml(str){return String(str).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');}export function sanitizeHtml(html,{allowedTags=['b','i','em','strong','a','p','br']}={}){return escapeHtml(html).replace(/&lt;\/?([a-z0-9]+)\b[^&]*&gt;/gi,(full,tag)=>allowedTags.includes(tag.toLowerCase())?full.replace(/&lt;/g,'<').replace(/&gt;/g,'>'):'');}