You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用v-html是否存在XSS漏洞?请验证我的实现安全性

你的v-html实现仍存在XSS漏洞

当前的实现并没有完全规避XSS风险,核心问题在于没有对用户输入的内容做HTML转义处理。

举个例子,如果用户输入:

/b/<img src=x onerror=alert('XSS')>/b/

你的代码会把这段内容处理成:

<strong><img src=x onerror=alert('XSS')></strong>

通过v-html渲染后,浏览器会执行onerror里的脚本,触发XSS攻击。类似的,用户还可以输入javascript:伪协议链接、<iframe>恶意嵌入等内容,都会被直接解析执行。

修复方案

必须对用户输入的所有文本片段做HTML转义,再进行标签包裹。可以先实现一个HTML转义函数,把特殊字符转换为HTML实体:

const escapeHtml = (text) => {
  return text
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#039;');
}

然后修改parseWords函数,确保所有用户输入的内容都先被转义,再处理粗体逻辑:

const parseWords = (text) => {
  return text
    .split("/b/")
    .map((part, i) => {
      const escapedPart = escapeHtml(part);
      return i % 2 ? `<strong>${escapedPart}</strong>` : escapedPart;
    })
    .join("");
}

这样处理后,用户输入的任何HTML标签或脚本都会被转义成实体字符,不会被浏览器解析执行,彻底规避XSS风险。

内容的提问来源于stack exchange,提问作者jdost_26

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 00:35:00