前端做渗透测试时怎么判断XSS漏洞是否真实存在?

IT人乙涵 阅读 10

我们团队最近在做安全审计,用 Burp Suite 扫描出一个反射型 XSS,但我不确定是不是误报。页面上用户输入的内容确实会回显,但我加了 encodeURIComponent 处理,按理说应该安全了,可扫描器还是报高危。

我试着手动构造 payload,比如输入 alert(1),结果被转义成纯文本显示了,没弹窗。但扫描器说在某个 URL 参数里能注入。是不是我测试方式不对?或者需要更复杂的 payload 才能验证?

下面是后端返回的那段 HTML 片段(简化过):

<div id="search-result">
  您搜索的是:<span><%= keyword %></span>
</div>

这里的 keyword 是从 URL query 拿的,前端没再处理,直接渲染。这种写法到底安不安全?该怎么正确验证漏洞是否存在?

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
打工人淑霞
这个问题的关键在于理解 encodeURIComponent 的作用范围。

encodeURIComponent 只对 URL 参数做 URL 编码,防止 URL 解析错误,但它对 HTML 上下文毫无作用。你前端加了它,后端模板 <%= keyword %> 怎么输出还是怎么输出。

JSP 的 <%= %> 默认确实会做 HTML 转义,但扫描器能报出来说明可能在某些配置下是 Raw 输出,或者你漏了某个参数没测。Burp Suite 报高危一般不是误报。

验证方法很简单:别用