前端输出用户内容时怎么防止XSS攻击? 西门培静 提问于 2026-03-02 09:23:19 阅读 4 前端 我在做一个评论功能,用户提交的内容直接用 innerHTML 插入到页面上,结果发现如果输入 <script>alert(1)</script> 会被执行,这明显有安全风险。 我试过用 replace 把尖括号替换成 < 和 >,但感觉不太靠谱,有没有更标准的做法?比如有没有现成的转义函数或者框架推荐的方案? 前端安全输出转义 我来解答 赞 4 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 小利 Dev Lv1 最简单的办法就是别用 innerHTML,改成 textContent 或 innerText,浏览器会自动帮你转义,根本不会执行脚本。 如果你确实需要渲染一些格式(比如换行),那就写个转义函数: function escapeHtml(str) { const div = document.createElement('div'); div.textContent = str; return div.innerHTML; } // 用的时候 element.innerHTML = escapeHtml(userContent); 要是用 Vue 或 React,直接用双花括号 {{ content }} 或者 {content},框架默认就帮你转义了,根本不用操心。 回复 点赞 2026-03-02 09:41 加载更多 相关推荐 2 回答 20 浏览 前端被XSS攻击了,应急响应该怎么做? 我们线上 Vue 项目突然收到用户反馈,页面里弹出了奇怪的 alert,怀疑是 XSS 攻击。我看了下代码,确实有个地方直接用了 v-html 渲染用户输入的内容,但之前没做任何过滤。现在想知道:一旦... 设计师红芹 安全 2026-02-24 19:23:19 1 回答 37 浏览 前端用JWT时,如何防止Token被XSS攻击窃取? 我在项目里用localStorage存JWT token,但同事说这样容易被XSS攻击,我试过把token加密存进去,但后端验证时解密失败了。现在改成用httpOnly的cookie,但axios发请... 百里国娟 前端 2026-02-09 16:08:30 2 回答 171 浏览 Vue里用innerHTML显示用户评论内容,怎么防止XSS攻击啊? 我在做一个论坛帖子的评论展示功能,用v-html渲染用户提交的内容,但测试时发现能直接执行脚本标签。比如用户输入alert(1),页面真的会弹窗。试过用转义函数替换尖括号,但图片和链接标签也失效了,怎... 书生シ竞兮 安全 2026-02-01 14:29:42 2 回答 49 浏览 安全需求文档该怎么写才能防XSS漏洞? 我们在做用户评论功能时,测试发现XSS漏洞,但安全需求文档里只写了“过滤危险字符”,具体该怎么做才能有效防范呢? 之前尝试用正则表达式过滤了<script>标签和特殊字符,但测试人员用Un... UX-彩云 安全 2026-01-29 21:23:26 2 回答 39 浏览 设置了X-XSS-Protection后CSS样式被过滤导致页面错乱怎么办? 我在开发页面时启用了X-XSS-Protection: 1; mode=block头,但发现动态生成的用户提交内容里的CSS样式被过滤了。比如用户输入的标签带内联样式时,浏览器直接移除了style属性... 程序员亚美 安全 2026-01-29 16:50:32 2 回答 106 浏览 修复XSS漏洞后怎么验证是否彻底解决了? 刚处理完前端页面的XSS漏洞,用两个不同工具测试结果却不一样,一个显示干净一个还能注入,这时候该怎么确认漏洞到底修好了没? 之前在评论区输入,修复后用OWASP ZAP扫描没问题,但自己手动测试居然还... a'ゞ雨辰 安全 2026-01-26 23:49:24 1 回答 104 浏览 前端应急响应时如何快速定位XSS漏洞的攻击入口? 最近在处理一个紧急安全事件,发现有人利用表单提交功能注入了XSS脚本。我们用了OWASP ZAP扫描,但始终找不到具体漏洞点。前端代码里有个动态渲染的评论区,像这样: <div id="comm... 慕容昕彤 安全 2026-02-19 09:06:33 1 回答 25 浏览 Nessus扫描显示React组件存在XSS漏洞,但代码已经过滤输入了怎么办? 大家好,我在用Nessus扫描公司前端项目时,发现一个React组件被标记为XSS漏洞。但代码明明已经用了DOMPurify过滤输入,这是怎么回事? 我的代码是这样的: import DOMPurif... 设计师锦灏 安全 2026-02-10 12:07:31 2 回答 30 浏览 用户输入渲染到HTML时如何防止XSS攻击?我的表单代码可能有漏洞 我在做一个表单,用户输入的内容会直接显示在页面上,但测试时发现可以注入脚本。比如用户输入alert(1)就会执行。现在用handleInput处理输入,但不知道该怎么安全转义: <div>... 极客凌熙 安全 2026-02-03 19:19:29 2 回答 75 浏览 React表单提交时如何防止XSS攻击?IDS/IPS配置有什么建议? 我在做一个用户反馈表单时发现,如果用户输入带标签的内容,提交后服务器IDS直接拦截请求了。但前端已经用了DOMPurify处理输入内容,为什么还是被拦截? 这是我的表单组件代码: import { u... FSD-义霞 安全 2026-02-02 08:01:36
innerHTML,改成textContent或innerText,浏览器会自动帮你转义,根本不会执行脚本。如果你确实需要渲染一些格式(比如换行),那就写个转义函数:
要是用 Vue 或 React,直接用双花括号
{{ content }}或者{content},框架默认就帮你转义了,根本不用操心。