blade-core-boot包中XssHttpServletRequestWrapper中XSS拦截器BUG

Blade 未结 0 640
liuhaibin
liuhaibin 剑童 2022-01-03 20:30

一、该问题的重现步骤是什么?

1.  表单提交html类似 < img src=1 onerror=alert(1)>, 理论上后端过滤器拦截到之后会会将html替换成空, 但是问题出在匹配html的正则上, 如果 <符号到img中间有空格的话正常替换成空没问题, 如果没有空格是<img src=1 alert(1)> 将匹配不到, 导致下一步监测script中的内容只去掉了alert变成<img src=1 "1"> 后续spring将请求参数转为json的时候会报错, 因为具体格式中多了一个双引号


二、你期待的结果是什么?实际看到的又是什么?

    

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

    2.8.2 2.9.0都有这个问题

四、请提供详细的错误堆栈信息,这很重要。

    

五、若有更多详细信息,请在下面提供。

    类:  XssHttpServletRequestWrapper 方法: processTag , 具体正则: 

private static final Pattern P_START_TAG = Pattern.compile("^([a-z0-9]+)(.*?)(/?)$", 34);
m = P_START_TAG.matcher(s);
回答
  • 消灭零回复
提交回复