"; const html ", "datePublished": "2026-04-05T23:06:28", "dateModified": "2026-04-05T23:06:28", "description": "JavaScript 的模板字符串本身并不具备 XSS 防护能力,若将未经处理的用户输入直接嵌入 HTML 字符串并用 innerHTML 渲染,极易触发跨站脚本攻击;真正安全的做法是摒弃危险的字符串拼接,转而使用 textContent、createElement 等 DOM API 安全插入纯文本,或在必须渲染 HTML 时严格转义特殊字符(如 `JavaScript 的模板字符串本身不会自动防止 XSS 攻击。当用户输入被直接插入 HTML 或通过 innerHTML 等方式渲染时,如果未正确转义,", "publisher": { "@type": "Organization", "name": "Golang学习网", "url": "https://m.17golang.com" }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://m.17golang.com/article/557708.html" } }
登录
首页 >  文章 >  前端

JavaScript 中使用模板字符串时,若直接嵌入用户输入,可能会导致 XSS(跨站脚本攻击)。为了安全地嵌入用户输入,应遵循以下最佳实践:1. 避免直接插入用户输入到 HTML 中模板字符串本身不会自动转义内容,如果直接将用户输入插入到 DOM 中,可能导致恶意脚本执行。const userInput = ""; const html

时间:2026-04-05 23:06:28 105浏览 收藏

JavaScript 的模板字符串本身并不具备 XSS 防护能力,若将未经处理的用户输入直接嵌入 HTML 字符串并用 innerHTML 渲染,极易触发跨站脚本攻击;真正安全的做法是摒弃危险的字符串拼接,转而使用 textContent、createElement 等 DOM API 安全插入纯文本,或在必须渲染 HTML 时严格转义特殊字符(如 `

JavaScript 的模板字符串如何安全地嵌入用户输入以防止 XSS 攻击?

JavaScript 的模板字符串本身不会自动防止 XSS 攻击。当用户输入被直接插入 HTML 或通过 innerHTML 等方式渲染时,如果未正确转义,就可能执行恶意脚本。要安全地嵌入用户输入,必须对内容进行适当的转义处理。

对用户输入进行 HTML 转义

在将用户输入插入模板字符串前,先将其特殊字符转换为 HTML 实体:

  • < 转为 <
  • > 转为 >
  • " 转为 "
  • ' 转为 '
  • & 转为 &

可以编写一个简单的转义函数:

<font color="#0000FF">function escapeHtml(str) {
  const div = document.createElement('div');
  div.textContent = str;
  return div.innerHTML;
}

const userInput = '<script>alert("xss")</script>';
const safeOutput = `<p>${escapeHtml(userInput)}</p>`;
// 结果:<p>&lt;script&gt;alert("xss")&lt;/script&gt;</p>
</font>

使用 textContent 而非 innerHTML

如果目标是将用户输入显示为文本内容,应避免使用 innerHTML,改用 textContent,它会自动转义 HTML:

<font color="#0000FF">const element = document.getElementById('output');
element.textContent = `欢迎,${userInput}`; // 安全
</font>

使用 DOM API 构建元素

更推荐的做法是通过 DOM 方法创建元素并设置文本内容,而不是拼接 HTML 字符串:

<font color="#0000FF">const p = document.createElement('p');
p.textContent = userInput;
document.body.appendChild(p);
</font>

考虑使用现代框架的内置防护

React、Vue 等框架默认会对插值内容进行转义,但仍需注意使用 dangerouslySetInnerHTML(React)或 v-html(Vue)等特性时的风险。除非必要,避免使用这些功能。

基本上就这些。模板字符串只是语法糖,安全取决于你怎么用它。只要确保用户数据不以原始 HTML 形式注入页面,就能有效防范大多数 XSS 场景。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>