调度日志页面XSS漏洞修复(ISSUE-3360)。

This commit is contained in:
xuxueli 2024-01-20 04:58:10 +08:00
parent 09d2a46245
commit c6a4df2a7b
2 changed files with 38 additions and 44 deletions

View File

@ -2348,56 +2348,41 @@ public void execute() {
### 7.34 版本 v2.4.1 Release Notes[规划中] ### 7.34 版本 v2.4.1 Release Notes[规划中]
- 1、【优化】多个项目依赖升级至较新稳定版本涉及netty、groovy、springboot、mybatis等 - 1、【优化】多个项目依赖升级至较新稳定版本涉及netty、groovy、springboot、mybatis等
- 2、【修复】"CVE-2022-43402" groovy低版本漏洞修复。
- 3、【修复】调度日志页面XSS漏洞修复(ISSUE-3360)。
### 7.35 新版本规划 [规划中] - 4、[规划中]注册节点,弹框分页展示;解决注册节点过多时无法展示问题;
- 1、[规划中]DAG流程任务
- DAG任务支持参数传递共享数据DAG任务创建、管理DAG任务日志查看、操作
- 子任务:废弃
- 2、[规划中]多数据库支持DAO层通过JPA实现不限制数据库类型
- 3、[规划中]告警增强:邮件告警 + webhook告警
- 4、[规划中]安全强化AccessToken动态生成、动态启停控制调度、回调
- 5、[规划中]任务导入导出工具,灵活支持版本升级、迁移等场景。
- 6、【优化】[规划中]任务日志重构:一次调度只记录一条主任务,维护起止时间和状态。
- 普通任务:只记录一条主任务;
- 广播任务:记录一条主任务,每个分片任务记录一条次任务,关联在主任务上;
- 重试任务:失败时,新增主任务。所有调度记录,包括入口调度和重试调度,均挂载主任务上。
- 7、【优化】[规划中]分片任务:全部完成后才会出发后置节点;
### TODO LIST ### TODO LIST
- 1、任务分片路由分片采用一致性Hash算法计算出尽量稳定的分片顺序即使注册机器存在波动也不会引起分批分片顺序大的波动目前采用IP自然排序可以满足需求待定 - 1、调度隔离调度中心针对不同执行器各自维护不同的调度和远程触发组件。
- 2、调度隔离调度中心针对不同执行器各自维护不同的调度和远程触发组件。 - 2、任务优先级调度与执行阶段按照优先级分配资源。
- 3、调度任务优先级 - 3、多数据库支持DAO层通过JPA实现不限制数据库类型。
- 4、多数据库支持DAO层通过JPA实现不限制数据库类型 - 4、执行器Log清理功能调度中心Log删除时同步删除执行器中的Log文件
- 5、执行器Log清理功能调度中心Log删除时同步删除执行器中的Log文件 - 5、性能优化任务、执行器数据全量本地缓存新增消息表广播通知
- 6、延时任务API触发支持"动态传参、延时消费";该功能与 XXL-MQ 冲突,该场景建议用后者; - 6、DAG流程任务
- 7、调度线程池改为协程方式实现大幅降低系统内存消耗 - 子任务:废弃
- 8、任务、执行器数据全量本地缓存新增消息表广播通知 - DAG任务创建、管理DAG任务日志查看、操作
- 9、忙碌转移优化全部机器忙碌时不再直接失败 - 支持参数传递,共享数据;
- 10、任务触发参数优化支持选择 "Cron触发"、"固定间隔时间触发"、"指定时间点触发"、"不选择" 等;
- 11、调度日志列表加上执行时长列并支持排序
- 12、DAG流程任务
- 替换子任务,支持参数传递,共享数据:
- 配置并列的"a-b、b-c"路径列表构成串行、并行、dag任务流程"dagre-d3"绘图;任务依赖,流程图,子任务+会签任务,各节点日志;支持根据成功、失败选择分支;
- 分片任务:全部完成后才会出发后置节点; - 分片任务:全部完成后才会出发后置节点;
- 13、日期过滤支持多个时间段排除 - 配置并列的"a-b、b-c"路径列表构成串行、并行、dag任务流程"dagre-d3"绘图;任务依赖,流程图,子任务+会签任务,各节点日志;支持根据成功、失败选择分支;
- 14、告警增强 - 7、任务标签方便搜索
- 8、告警增强
- 邮件告警:支持自定义标题、模板格式; - 邮件告警:支持自定义标题、模板格式;
- webhook告警支持自定义告警URL、请求体格式 - webhook告警支持自定义告警URL、请求体格式
- 15、新增任务运行模式 "GLUE模式(GO) "支持GO任务 - 9、安全强化AccessToken动态生成、动态启停控制调度、回调
- 16、GLUE 模式 Web Ide 版本对比功能; - 10、任务导入导出工具灵活支持版本升级、迁移等场景。
- 17、注册中心优化实时性注册发现心跳注册间隔10srefresh失败则首次注册并立即更新注册信息心跳类似30s过期销毁 - 11、任务日志重构一次调度只记录一条主任务维护起止时间和状态。
- 18、提供执行器Docker镜像 - 普通任务:只记录一条主任务;
- 19、脚本任务支持数据参数新版本仅支持单参数不支持需要兼容 - 广播任务:记录一条主任务,每个分片任务记录一条次任务,关联在主任务上;
- 20、批量调度调度请求入queue调度线程批量获取调度请求并发起远程调度提高线程效率 - 重试任务:失败时,新增主任务。所有调度记录,包括入口调度和重试调度,均挂载主任务上。
- 21、执行器端口复用复用容器端口提供通讯服务 - 12、分片任务全部完成后才会出发后置节点
- 22、分片任务全部成功后触发子任务 - 13、日期过滤支持多个时间段排除
- 23、新增执行器描述属性任务名称属性 - 13、GLUE 模式 Web Ide 版本对比功能;
- 24、自定义失败重试时间间隔 - 14、提供执行器Docker镜像
- 25、任务标签方便搜索 - 15、脚本任务支持数据参数新版本仅支持单参数不支持需要兼容
- 26、执行器dag执行器不需要注册机器 - 17、批量调度调度请求入queue调度线程批量获取调度请求并发起远程调度提高线程效率
- 18、执行器端口复用复用容器端口提供通讯服务
- 19、自定义失败重试时间间隔
## 八、其他 ## 八、其他

View File

@ -20,9 +20,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.util.HtmlUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -154,6 +156,13 @@ public class JobLogController {
} }
} }
// fix xss
if (logResult.getContent()!=null && StringUtils.hasText(logResult.getContent().getLogContent())) {
String newLogContent = logResult.getContent().getLogContent();
newLogContent = HtmlUtils.htmlEscape(newLogContent, "UTF-8");
logResult.getContent().setLogContent(newLogContent);
}
return logResult; return logResult;
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);