ZAP检测出DOM based XSS高危漏洞,求排查方向与修复指引
DOM型XSS漏洞修复方向
- 输入输出全链路管控:所有从URL参数、location.hash、localStorage/sessionStorage、postMessage消息等DOM上下文获取的不可信输入,插入页面前必须做完整HTML实体转义;优先使用
textContent而非innerHTML操作文本内容,jQuery场景下用.text()方法替代.html()方法完成文本插入。 - 配置内容安全策略(CSP):在HTTP响应头中添加
Content-Security-Policy规则,禁用内联脚本执行、限制可加载的脚本源域名,即使存在注入点也能直接阻断攻击payload的执行。 - 高危API调用管控:禁止将不可信输入直接传入
eval()、setTimeout()、setInterval()、Function()构造函数等可动态执行代码的API,也禁止直接传入document.write()、window.location.href等可直接操作DOM或页面跳转的API。
重点排查问题点
自研代码排查
- 排查所有读取外部不可信输入的代码逻辑,确认是否存在直接将输入内容插入DOM、或传入高危执行API的场景。
- 排查jQuery使用逻辑:jQuery 3.6.0仅修复了框架本身的历史XSS漏洞,若业务代码将不可信内容直接传入
.html()、.append()、.prepend()、$()构造函数等DOM操作方法,仍然会触发XSS,需逐一校验这类方法的入参来源。 - 排查前端路由逻辑:若使用哈希路由模式,需检查路由参数的解析和渲染逻辑,确认不存在直接将路由参数渲染到页面的场景。
第三方依赖排查
- 排查Bootstrap 4.3.1相关组件的使用:该版本存在多处已知XSS漏洞,比如tooltip、popover组件如果传入的title、content属性包含不可信内容会触发XSS,同时data-api属性解析逻辑也存在注入风险,建议优先升级到Bootstrap 4.6.2及以上稳定版本修复已知漏洞。
- 排查所有基于jQuery封装的自定义插件,检查插件内部DOM操作逻辑是否存在未转义直接处理外部输入的场景。
内容的提问来源于stack exchange,提问作者Kiran Khot
相关产品推荐
相关产品推荐

