change(XssHttpServletRequestWrapper): 移除 JSON 请求体的 XSS 过滤逻辑

main
zch 2 months ago
parent d3de9763c9
commit 165ffd4ef4

@ -54,15 +54,16 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
return super.getInputStream();
}
// 为空,直接返回
// 这里只做“是否为空”的探测,不再对整段 JSON 做 clean。
// 原因门户页面配置里存在“JSON 字符串中再嵌 HTML 富文本”的场景,
// 如果对整个请求体统一转义,会把引号、标签、转义符一起改坏,最终导致 @RequestBody 反序列化失败。
String json = IOUtils.toString(super.getInputStream(), "utf-8");
if (StringUtils.isEmpty(json))
{
return super.getInputStream();
}
// xss过滤
json = EscapeUtil.clean(json).trim();
// JSON 请求体保持原样透传,字段级过滤应交给具体业务校验或展示侧转义处理。
byte[] jsonBytes = json.getBytes("utf-8");
final ByteArrayInputStream bis = new ByteArrayInputStream(jsonBytes);
return new ServletInputStream()
@ -108,4 +109,4 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
String header = super.getHeader(HttpHeaders.CONTENT_TYPE);
return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
}
}
}

Loading…
Cancel
Save