xss库过滤后内容变空白是怎么回事? Mr-熙然 提问于 2026-03-18 14:13:19 阅读 8 安全 我用 xss 库对用户输入做过滤,但有些内容直接变成空字符串了,比如输入 alert(1) 确实该被清掉,但像 test 这种,为啥连 “test” 都没了? 我试过默认配置和自定义白名单,还是不行。代码是这样: const clean = xss('<img src="a" onerror="alert(1)">test'); console.log(clean); // 输出居然是空字符串! XSS防护前端安全 我来解答 赞 4 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 司马欣怡 Lv1 这个问题挺诡异的,默认情况下 xss 库不应该把 "test" 也给你清掉。 你先打印一下原始输入看看: const input = '<img src="a" onerror="alert(1)">test'; console.log('原始输入:', input); console.log('输入长度:', input.length); 我怀疑你输入的字符串本身可能有问题。你代码里写的是 xss('test'),但看问题详情你贴的是 xss(''<img src="a" onerror="alert(1)">test''),这可是 HTML 实体编码后的内容啊。 如果是实体编码的情况,xss 库会把它当普通文本处理,不会做过滤,最后输出应该和输入一样。你试试直接输出那个带 < 的字符串,看看是不是本来就长这样。 如果排除编码问题,那就检查一下你的 xss 配置: const xss = require('xss'); const clean = new xss.FilterXSS({ whiteList: {}, // 你是不是设了空白名单? stripIgnoreTag: true, stripIgnoreTagBody: ['script'] }); console.log(clean.process('<img src="a" onerror="alert(1)">test')); 你配置里是不是把 whiteList 设成空对象了?那所有标签都会被干掉的。 另外还有一种情况:有些版本或者用法下,如果整个字符串被识别为危险内容,可能会返回空串。你可以先试试不过滤直接输出原字符串,确认问题到底出在哪一步。 回复 点赞 2026-03-18 15:25 加载更多 相关推荐 1 回答 12 浏览 xss库过滤后内容显示异常怎么办? 我用 xss 库对用户输入做了过滤,但有些正常内容也被转义了,比如 <div> 这种标签直接显示成文本了,不是渲染成 HTML。是不是我用法不对? 我是这样用的: import { san... Good“洛熙 安全 2026-03-05 16:23:18 1 回答 45 浏览 前端做XSS输入过滤到底该在哪儿处理? 我最近在用 Vue 写一个评论功能,用户输入的内容会直接渲染到页面上。我知道要防 XSS,但不确定是在输入时就过滤掉危险字符,还是在渲染时转义?试过在提交前用正则替换 script 标签,但好像还是能... Code°秀云 安全 2026-03-19 08:44:24 1 回答 28 浏览 前端怎么防范XSS攻击?我用了DOMPurify还是被绕过了? 我在项目里引入了 DOMPurify 来过滤用户输入,但安全测试时还是报了 XSS 漏洞。比如用户提交的内容里有 <img src=x onerror=alert(1)>,明明应该被过滤掉... 技术若溪 安全 2026-03-09 19:29:21 2 回答 56 浏览 安全需求文档该怎么写才能防XSS漏洞? 我们在做用户评论功能时,测试发现XSS漏洞,但安全需求文档里只写了“过滤危险字符”,具体该怎么做才能有效防范呢? 之前尝试用正则表达式过滤了<script>标签和特殊字符,但测试人员用Un... UX-彩云 安全 2026-01-29 21:23:26 2 回答 49 浏览 设置了X-XSS-Protection后CSS样式被过滤导致页面错乱怎么办? 我在开发页面时启用了X-XSS-Protection: 1; mode=block头,但发现动态生成的用户提交内容里的CSS样式被过滤了。比如用户输入的标签带内联样式时,浏览器直接移除了style属性... 程序员亚美 安全 2026-01-29 16:50:32 2 回答 45 浏览 React里设置了X-XSS-Protection头页面却变空白了? 最近在给React项目加固安全配置,按教程加了X-XSS-Protection头,结果页面直接变空白了。明明后端已经设置过响应头,为什么前端代码里再配置就会出问题? 我尝试在App.js里这样写: f... 司马卫红 安全 2026-02-12 23:55:23 2 回答 39 浏览 CSS样式中的expression()如何绕过事件属性过滤导致XSS? 我在开发评论系统时发现,即使过滤了所有on开头的事件属性,用户提交的CSS代码还是能触发XSS。比如有人写了个这样的样式: div { width: expression(alert('XSS'));... 打工人尚勤 安全 2026-02-12 21:11:25 1 回答 34 浏览 Nessus扫描显示React组件存在XSS漏洞,但代码已经过滤输入了怎么办? 大家好,我在用Nessus扫描公司前端项目时,发现一个React组件被标记为XSS漏洞。但代码明明已经用了DOMPurify过滤输入,这是怎么回事? 我的代码是这样的: import DOMPurif... 设计师锦灏 安全 2026-02-10 12:07:31 2 回答 155 浏览 修复XSS漏洞后怎么验证是否彻底解决了? 刚处理完前端页面的XSS漏洞,用两个不同工具测试结果却不一样,一个显示干净一个还能注入,这时候该怎么确认漏洞到底修好了没? 之前在评论区输入,修复后用OWASP ZAP扫描没问题,但自己手动测试居然还... a'ゞ雨辰 安全 2026-01-26 23:49:24 1 回答 9 浏览 前端做渗透测试时怎么判断XSS漏洞是否真实存在? 我们团队最近在做安全审计,用 Burp Suite 扫描出一个反射型 XSS,但我不确定是不是误报。页面上用户输入的内容确实会回显,但我加了 encodeURIComponent 处理,按理说应该安全... IT人乙涵 安全 2026-03-18 08:59:25
你先打印一下原始输入看看:
我怀疑你输入的字符串本身可能有问题。你代码里写的是
xss('
test'),但看问题详情你贴的是xss(''<img src="a" onerror="alert(1)">test''),这可是 HTML 实体编码后的内容啊。如果是实体编码的情况,xss 库会把它当普通文本处理,不会做过滤,最后输出应该和输入一样。你试试直接输出那个带
<的字符串,看看是不是本来就长这样。如果排除编码问题,那就检查一下你的 xss 配置:
你配置里是不是把 whiteList 设成空对象了?那所有标签都会被干掉的。
另外还有一种情况:有些版本或者用法下,如果整个字符串被识别为危险内容,可能会返回空串。你可以先试试不过滤直接输出原字符串,确认问题到底出在哪一步。