当前位置:首页 > JavaScript

js实现htmlencode

2026-02-01 14:43:30JavaScript

HTML 编码的实现方法

在 JavaScript 中实现 HTML 编码(HTMLEncode)通常是为了防止 XSS(跨站脚本攻击),将特殊字符转换为对应的 HTML 实体。以下是几种常见的实现方式:

使用 innerHTMLtextContent 进行编码

通过创建一个虚拟的 DOM 元素,利用 textContent 属性自动转义特殊字符,再通过 innerHTML 获取编码后的结果:

js实现htmlencode

function htmlEncode(str) {
  const div = document.createElement('div');
  div.textContent = str;
  return div.innerHTML;
}

// 示例
const encoded = htmlEncode('<script>alert("xss")</script>');
// 输出: "&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;"

手动替换特殊字符

通过正则表达式或字符串替换,将关键字符转换为对应的 HTML 实体:

js实现htmlencode

function htmlEncode(str) {
  return str
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;');
}

// 示例
const encoded = htmlEncode('Test "quote" & <tag>');
// 输出: "Test &quot;quote&quot; &amp; &lt;tag&gt;"

使用 encodeURIComponent 结合额外处理

encodeURIComponent 可以转义大部分特殊字符,但需额外处理单引号和斜杠:

function htmlEncode(str) {
  return encodeURIComponent(str)
    .replace(/'/g, '%27')
    .replace(/\//g, '%2F');
}

// 示例
const encoded = htmlEncode('<a href="/test">link</a>');
// 输出: "%3Ca%20href%3D%22%2Ftest%22%3Elink%3C%2Fa%3E"

使用第三方库

现代前端开发中,可以使用现成的库如 lodashhe 实现更全面的编码:

// 使用 he 库(需安装)
import he from 'he';
const encoded = he.encode('<div>Hello</div>');
// 输出: "&lt;div&gt;Hello&lt;/div&gt;"

注意事项

  • 如果内容需要插入到 HTML 属性中,需额外转义单引号(')和双引号(")。
  • 对于富文本内容(如用户输入的 HTML),需使用专门的净化库(如 DOMPurify)而非简单编码。
  • 编码后的内容需根据使用场景决定是否配合其他安全措施(如 CSP)。

标签: jshtmlencode
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…