You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何修复sanitize逻辑无法拦截window对象类反射型XSS payload的问题

解决Servlet应用中无HTML标签的反射型XSS拦截问题

你的问题核心在于:之前的防护逻辑只针对HTML标签注入类的XSS,但忽略了JavaScript上下文注入的场景——这类payload不需要HTML标签,而是通过闭合变量、拼接代码的方式在JS环境中执行,所以单纯的HTML sanitize无法拦截。以下是具体解决思路:

1. 放弃"一刀切"的输入拦截,转向"场景化输出转义"

输入阶段的sanitize只能过滤已知的恶意标签,无法覆盖所有JS注入场景。更可靠的方式是在输出到不同上下文时做针对性转义,因为此时你明确知道输入会被放到哪里(HTML文本、HTML属性、JS代码、URL等):

  • 输出到HTML文本节点:继续用Jsoup的HTML sanitize(Jsoup.clean(input, Whitelist.basic()))
  • 输出到HTML属性(比如input的value、div的title):用ESAPI的ESAPI.encoder().encodeForHTMLAttribute(input)
  • 输出到JavaScript代码块/事件属性(比如
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:13:17