安全培训中如何避免React里的XSS漏洞? UE丶沐希 提问于 2026-03-17 19:19:18 阅读 56 安全 最近公司搞安全开发生命周期培训,提到前端也要防XSS。我在用React写一个动态渲染用户输入内容的功能,但不确定这样写会不会有风险。 我试过直接用{userInput}插值,但听说dangerouslySetInnerHTML更危险。下面是我现在的写法,是不是已经安全了?还是说还得额外处理? function MessageDisplay({ message }) { return ( <div> {message} </div> ); } 我来解答 赞 6 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 UP主~誉馨 Lv1 你的写法是安全的。 React 默认的 {message} 插值会自动对内容进行 HTML 转义,比如用户输入 ,会直接变成文本显示出来,不会执行。这点比直接操作 innerHTML 的原生 JS 安全多了。 但需要注意几个坑: 一是别滥用 dangerouslySetInnerHTML,这货相当于直接操作 innerHTML,如果你非要渲染用户给的 HTML,必须用 dompurify 这类库先过滤一遍: import DOMPurify from 'dompurify'; 二是如果 message 用在 href、src、onClick 这些属性里,要小心 javascript: 协议和事件处理。比如: <pre class="pure-highlightjs line-numbers"><code class="language-javascript">// 危险写法 <a href={userUrl}>链接</a> // 防御方式:检查协议 const safeUrl = userUrl.startsWith('http://') || userUrl.startsWith('https://') ? userUrl : 'about:blank'; <a href={safeUrl}>链接</a> 总结一下:你的代码没问题,放心用。记住别手贱用 dangerouslySetInnerHTML 就行,除非特殊情况必须渲染 HTML,否则能不用就不用。 回复 点赞 2026-03-17 21:01 加载更多 相关推荐 1 回答 37 浏览 DAST扫描报React应用有XSS漏洞,但我用了JSX不是自动转义了吗? 我们最近用OWASP ZAP做DAST安全扫描,结果报了一个反射型XSS漏洞。可我明明在React里直接用JSX渲染用户输入,按理说React会自动转义啊,怎么还会被扫出来? 比如下面这段代码,只是把... 欧阳东宁 安全 2026-03-30 21:17:16 2 回答 53 浏览 Nessus扫描显示React组件存在XSS漏洞,但代码已经过滤输入了怎么办? 大家好,我在用Nessus扫描公司前端项目时,发现一个React组件被标记为XSS漏洞。但代码明明已经用了DOMPurify过滤输入,这是怎么回事? 我的代码是这样的: import DOMPurif... 设计师锦灏 安全 2026-02-10 12:07:31 1 回答 54 浏览 React中如何防止使用window.location.search导致的DOM型XSS? 我在React组件里用URL参数显示用户输入,发现这样写可能有XSS漏洞: function SearchResults() { const searchParam = new URLSearchPa... 东方爱菊 安全 2026-01-31 08:19:29 2 回答 64 浏览 React里设置了X-XSS-Protection头页面却变空白了? 最近在给React项目加固安全配置,按教程加了X-XSS-Protection头,结果页面直接变空白了。明明后端已经设置过响应头,为什么前端代码里再配置就会出问题? 我尝试在App.js里这样写: f... 司马卫红 安全 2026-02-12 23:55:23 2 回答 86 浏览 SAST扫描总报React组件XSS漏洞,但代码明明转义了怎么办? 最近给React项目配置了SAST工具,扫描时总提示组件存在XSS风险。代码里已经用dangerouslySetInnerHTML包裹了sanitization函数处理的数据,为什么还是报这个漏洞? ... 长孙奕冉 安全 2026-01-25 21:37:24 1 回答 51 浏览 白盒测试时怎么判断前端代码是否存在XSS风险? 最近在做项目安全自查,听说白盒测试要查XSS漏洞,但我看自己写的React组件里都是用{userInput}这种插值,应该没问题吧?可又不确定有没有漏掉什么场景。 比如有个地方用了dangerousl... 设计师丽丽 安全 2026-03-31 04:19:14 1 回答 43 浏览 IAST工具在React项目中怎么检测到XSS漏洞? 我们团队最近引入了IAST做安全测试,但我有点搞不清楚它在前端React项目里到底能检测到什么。比如下面这段代码,明显有XSS风险,但IAST扫描后没报任何问题,是我用法不对还是IAST本来就不擅长检... 爱学习的素香 安全 2026-03-22 16:52:24 2 回答 35 浏览 前端输入过滤真能防XSS吗?我这样写安全吗? 我在React项目里做用户评论功能,担心XSS攻击,就对输入做了个简单过滤,但不确定这样够不够。比如把script标签替换成空字符串,但听说还有其他绕过方式? 下面是我现在的处理代码: const s... 开发者玉聪 安全 2026-03-25 11:41:19 1 回答 45 浏览 前端如何在Vue项目中安全地处理用户输入以防止XSS攻击? 我在做DevSecOps集成时,安全扫描工具报了一个高危XSS漏洞,说用户输入直接渲染到页面上了。我试过用v-text,但有些地方必须用v-html展示富文本,结果就被扫出问题了。 比如下面这段代码,... 长孙艳杰 安全 2026-03-24 10:12:22 2 回答 50 浏览 前端代码里怎么防止XSS攻击?我这样写安全吗? 最近在做渗透测试,发现我们项目里有个用户输入展示的地方可能有XSS风险。我用React直接渲染用户输入的内容,但听说这样不安全,可又不确定具体哪里有问题。 我试过用DOMPurify处理,但团队有人说... Des.统思 安全 2026-03-22 11:11:22
React 默认的
{message}插值会自动对内容进行 HTML 转义,比如用户输入,会直接变成文本显示出来,不会执行。这点比直接操作 innerHTML 的原生 JS 安全多了。但需要注意几个坑:
一是别滥用
dangerouslySetInnerHTML,这货相当于直接操作 innerHTML,如果你非要渲染用户给的 HTML,必须用dompurify这类库先过滤一遍: