白盒测试时怎么判断前端代码是否存在XSS风险? 设计师丽丽 提问于 2026-03-31 04:19:14 阅读 3 安全 最近在做项目安全自查,听说白盒测试要查XSS漏洞,但我看自己写的React组件里都是用{userInput}这种插值,应该没问题吧?可又不确定有没有漏掉什么场景。 比如有个地方用了dangerouslySetInnerHTML,虽然数据是后端返回的,但没再转义。我试着输入<script>alert(1)</script>,页面居然真弹窗了!这算高危漏洞吗?该怎么修复? 另外,除了这种明显的情况,还有哪些前端代码写法容易引入XSS?有没有工具能自动扫描这类问题? 白盒测试 我来解答 赞 1 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 Code°鹤荣 Lv1 XSS确实是个头疼的问题,特别是前端代码。你遇到的情况很典型,直接用 dangerouslySetInnerHTML 且不转义确实是高危漏洞。 先说简单的修复方法,如果你非要使用 dangerouslySetInnerHTML,至少要做个基本的HTML实体转义: function escapeHtml(str) { return str.replace(/&/g, "&") .replace(/ .replace(/>/g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } 不过最好的方式是避免直接使用这个属性。React本身提供了一种更安全的方式:通过属性而不是innerHTML来渲染内容。 除了dangerouslySetInnerHTML,其他常见的XSS场景还有: 1. 动态设置标签的href属性 2. 直接在DOM中插入用户输入(比如用.innerHTML) 说到工具,eslint-plugin-react-security和SonarQube都能帮你检查这些问题。我建议都装上,虽然不能完全依赖工具,但能帮你发现不少问题。 另外分享个小技巧,我在项目里加了个全局的safeRender函数,所有需要渲染用户输入的地方都走一遍这个函数,算是额外的一道保险吧。写代码的时候真得小心再小心,这种安全问题藏得深还容易被忽略。 回复 点赞 2026-03-31 05:00 加载更多 相关推荐 2 回答 22 浏览 白盒测试时如何检测前端代码中的XSS漏洞? 我在做项目的安全自查,听说白盒测试要查XSS,但不太清楚具体该看哪些地方。比如用户输入的内容在页面上展示时,是不是只要用了innerHTML就有风险? 我试过用ESLint的security插件,但它... UI雯婧 安全 2026-03-23 19:25:20 1 回答 24 浏览 前端做渗透测试时怎么判断XSS漏洞是否真实存在? 我们团队最近在做安全审计,用 Burp Suite 扫描出一个反射型 XSS,但我不确定是不是误报。页面上用户输入的内容确实会回显,但我加了 encodeURIComponent 处理,按理说应该安全... IT人乙涵 安全 2026-03-18 08:59:25 2 回答 159 浏览 修复XSS漏洞后怎么验证是否彻底解决了? 刚处理完前端页面的XSS漏洞,用两个不同工具测试结果却不一样,一个显示干净一个还能注入,这时候该怎么确认漏洞到底修好了没? 之前在评论区输入,修复后用OWASP ZAP扫描没问题,但自己手动测试居然还... a'ゞ雨辰 安全 2026-01-26 23:49:24 2 回答 34 浏览 前端代码里怎么防止XSS攻击?我这样写安全吗? 最近在做渗透测试,发现我们项目里有个用户输入展示的地方可能有XSS风险。我用React直接渲染用户输入的内容,但听说这样不安全,可又不确定具体哪里有问题。 我试过用DOMPurify处理,但团队有人说... Des.统思 安全 2026-03-22 11:11:22 1 回答 39 浏览 前端做渗透测试时怎么测XSS漏洞? 我最近在学Web安全,想自己动手测下项目里的XSS漏洞。但作为前端,不太清楚具体该从哪下手,比如哪些输入点要重点检查? 我在本地试过往表单里输alert(1),但页面没弹窗,是被框架自动转义了吗?比如... 公孙毓珂 安全 2026-03-20 21:03:19 2 回答 41 浏览 Nessus扫描显示React组件存在XSS漏洞,但代码已经过滤输入了怎么办? 大家好,我在用Nessus扫描公司前端项目时,发现一个React组件被标记为XSS漏洞。但代码明明已经用了DOMPurify过滤输入,这是怎么回事? 我的代码是这样的: import DOMPurif... 设计师锦灏 安全 2026-02-10 12:07:31 2 回答 37 浏览 前端代码审查时如何发现XSS漏洞? 最近在做安全Code Review,看到一段动态插入HTML的代码,担心有XSS风险。比如这种: element.innerHTML = userContent; 有没有什么具体的检查点或者工具能帮我... Code°洋泽 安全 2026-03-21 03:05:17 1 回答 32 浏览 前端怎么防范XSS攻击?我用了DOMPurify还是被绕过了? 我在项目里引入了 DOMPurify 来过滤用户输入,但安全测试时还是报了 XSS 漏洞。比如用户提交的内容里有 <img src=x onerror=alert(1)>,明明应该被过滤掉... 技术若溪 安全 2026-03-09 19:29:21 2 回答 38 浏览 前端被XSS攻击了,应急响应该怎么做? 我们线上 Vue 项目突然收到用户反馈,页面里弹出了奇怪的 alert,怀疑是 XSS 攻击。我看了下代码,确实有个地方直接用了 v-html 渲染用户输入的内容,但之前没做任何过滤。现在想知道:一旦... 设计师红芹 安全 2026-02-24 19:23:19 2 回答 58 浏览 安全需求文档该怎么写才能防XSS漏洞? 我们在做用户评论功能时,测试发现XSS漏洞,但安全需求文档里只写了“过滤危险字符”,具体该怎么做才能有效防范呢? 之前尝试用正则表达式过滤了<script>标签和特殊字符,但测试人员用Un... UX-彩云 安全 2026-01-29 21:23:26
dangerouslySetInnerHTML且不转义确实是高危漏洞。先说简单的修复方法,如果你非要使用
dangerouslySetInnerHTML,至少要做个基本的HTML实体转义:不过最好的方式是避免直接使用这个属性。React本身提供了一种更安全的方式:通过属性而不是innerHTML来渲染内容。
除了
dangerouslySetInnerHTML,其他常见的XSS场景还有:1. 动态设置标签的href属性
2. 直接在DOM中插入用户输入(比如用
.innerHTML)说到工具,eslint-plugin-react-security和SonarQube都能帮你检查这些问题。我建议都装上,虽然不能完全依赖工具,但能帮你发现不少问题。
另外分享个小技巧,我在项目里加了个全局的
safeRender函数,所有需要渲染用户输入的地方都走一遍这个函数,算是额外的一道保险吧。写代码的时候真得小心再小心,这种安全问题藏得深还容易被忽略。