这东西扫描有问题,不走过滤器!不走过滤器!不走过滤器! 重要的事情说三遍,不管你在过滤器配置写的过滤多好,本地代码返回有多正确,它是不会检测到的!你需要在它检测出的接口那加上过滤。
- 如果是反射型xss,在接口内先将参数类过滤一遍,
- 如果是存储性xss,需要将返回参数在对应的接口返回处过滤一遍,可以直接写在公共的返回类的setData里,或者封装单独的方法,只要最后能走就行(ps:在方法里不要写判断(if),直接走过滤逻辑,因为它这破检测会走别的逻辑,哪怕你用的接口写死只走过滤的逻辑,还是会检测出来漏洞)
参考代码:
//返回前端封装的返回类,具体就不写了
public static <T> ResponseResult<T> success(T t) {
ResponseResult<T> responseResult = new ResponseResult<T>();
responseResult.setCode("xxx");
responseResult.setMessage("请求成功");
String jsonData = JSON.toJSONString(t, SerializerFeature.WriteMapNullValue);
responseResult.setData(JSON.parseObject(StringEscapeUtil.filterXssResponse(jsonData),
(Type) t.getClass().getDeclaringClass(), Feature.OrderedField));
return responseResult;
}
/**
* .过滤返回前端数据 xss
*
* @param data 返回数据
* @return 过滤结果
*/
public String filterXssResponse(String data) {
if (StringUtils.isBlank(data)) {
return data;
}
//这是你自己写的过滤方法、网上很多(偷偷告诉你直接返回data 也会检测通过- -)
//可使用hutool的 HtmlUtil.filter
return filterXssData(data);
}