From 619626ae7ef85afc60c720fb309efb08b58b0cb7 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期一, 20 一月 2025 09:43:26 +0800 Subject: [PATCH] sqlInject2 --- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/data/controller/admin/PlanDataSetController.java | 4 ++-- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java | 10 +++++----- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/data/controller/admin/IndDataSetController.java | 4 ++-- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/item/collection/PlanItemCollector.java | 2 ++ iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/xss/SQLFilter.java | 36 +++++++++++++++++++++++++++++++----- 5 files changed, 42 insertions(+), 14 deletions(-) diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/xss/SQLFilter.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/xss/SQLFilter.java index 57178fc..7d2d02d 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/xss/SQLFilter.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/xss/SQLFilter.java @@ -12,10 +12,11 @@ /** * SQL注入过滤 - * @param str 待验证的字符串 + * + * @param str 待验证的字符串 */ - public static String sqlInject(String str){ - if(StringUtils.isBlank(str)){ + public static String sqlInject(String str) { + if (StringUtils.isBlank(str)) { return null; } //去掉'|"|;|\字符 @@ -31,8 +32,33 @@ String[] keywords = {"master", "truncate", "insert", "select", "delete", "update", "declare", "alter", "drop"}; //判断是否包含非法字符 - for(String keyword : keywords){ - if(str.indexOf(keyword) != -1){ + for (String keyword : keywords) { + if (str.indexOf(keyword) != -1) { + throw new RRException("包含非法字符"); + } + } + + return str; + } + + /** + * SQL注入过滤 + * + * @param orgStr 待验证的字符串 + */ + public static String sqlInject2(String orgStr) { + if (StringUtils.isBlank(orgStr)) { + return null; + } + //转换成小写 + String str = new String(orgStr.toLowerCase()); + + //非法字符 + String[] keywords = {";", "master", "truncate", "insert", "select", "delete", "update", "declare", "alter", "drop"}; + + //判断是否包含非法字符 + for (String keyword : keywords) { + if (str.indexOf(keyword) != -1) { throw new RRException("包含非法字符"); } } diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/data/controller/admin/IndDataSetController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/data/controller/admin/IndDataSetController.java index d117c17..4438ab3 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/data/controller/admin/IndDataSetController.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/data/controller/admin/IndDataSetController.java @@ -48,7 +48,7 @@ @Operation(summary = "创建指标数据集") @PreAuthorize("@ss.hasPermission('data:ind-data-set:create')") public CommonResult<Boolean> create(@Valid @RequestBody IndDataSetSaveReqVO createReqVO) { - SQLFilter.sqlInject(createReqVO.getQuerySql()); + SQLFilter.sqlInject2(createReqVO.getQuerySql()); indDataSetService.create(createReqVO); return success(true); } @@ -57,7 +57,7 @@ @Operation(summary = "修改指标数据集") @PreAuthorize("@ss.hasPermission('data:ind-data-set:update')") public CommonResult<Boolean> update(@Valid @RequestBody IndDataSetSaveReqVO updateReqVO) { - SQLFilter.sqlInject(updateReqVO.getQuerySql()); + SQLFilter.sqlInject2(updateReqVO.getQuerySql()); indDataSetService.update(updateReqVO); return success(true); } diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java index 625bf6e..ed1c49d 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/value/service/impl/IndItemValueServiceImpl.java @@ -65,11 +65,11 @@ log.warn("数据源不能为空"); return null; } - SQLFilter.sqlInject(dto.getSelectSql()); - SQLFilter.sqlInject(dto.getViewSql()); - SQLFilter.sqlInject(dto.getWhereSql()); - SQLFilter.sqlInject(dto.getGroupSql()); - SQLFilter.sqlInject(dto.getGroupSql()); + SQLFilter.sqlInject2(dto.getSelectSql()); + SQLFilter.sqlInject2(dto.getViewSql()); + SQLFilter.sqlInject2(dto.getWhereSql()); + SQLFilter.sqlInject2(dto.getGroupSql()); + SQLFilter.sqlInject2(dto.getGroupSql()); DataContextHolder.setDataSourceId(Long.valueOf(dto.getDataSource())); return baseDao.getSourceValue(dto); } diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/data/controller/admin/PlanDataSetController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/data/controller/admin/PlanDataSetController.java index 0314c7b..7d7721b 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/data/controller/admin/PlanDataSetController.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/data/controller/admin/PlanDataSetController.java @@ -47,7 +47,7 @@ @Operation(summary = "创建计划数据集") @PreAuthorize("@ss.hasPermission('data:plan-data-set:create')") public CommonResult<Boolean> create(@Valid @RequestBody PlanDataSetSaveReqVO createReqVO) { - SQLFilter.sqlInject(createReqVO.getQuerySql()); + SQLFilter.sqlInject2(createReqVO.getQuerySql()); indDataSetService.create(createReqVO); return success(true); } @@ -56,7 +56,7 @@ @Operation(summary = "修改计划数据集") @PreAuthorize("@ss.hasPermission('data:plan-data-set:update')") public CommonResult<Boolean> update(@Valid @RequestBody PlanDataSetSaveReqVO updateReqVO) { - SQLFilter.sqlInject(updateReqVO.getQuerySql()); + SQLFilter.sqlInject2(updateReqVO.getQuerySql()); indDataSetService.update(updateReqVO); return success(true); } diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/item/collection/PlanItemCollector.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/item/collection/PlanItemCollector.java index 4e116ea..2ef1f30 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/item/collection/PlanItemCollector.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/plan/item/collection/PlanItemCollector.java @@ -2,6 +2,7 @@ import com.iailab.framework.tenant.core.context.DataContextHolder; import com.iailab.module.data.common.utils.DateUtils; +import com.iailab.module.data.common.xss.SQLFilter; import com.iailab.module.data.plan.data.entity.PlanDataSetEntity; import com.iailab.module.data.plan.data.service.PlanDataSetService; import com.iailab.module.data.plan.item.entity.PlanItemEntity; @@ -44,6 +45,7 @@ return null; } Map<String, Object> params = getSqlParams(dataSet, startTime, endTime); + SQLFilter.sqlInject2(dataSet.getQuerySql()); DataContextHolder.setDataSourceId(Long.valueOf(dataSet.getDataSource())); List<PlanItemDataVO> dataList = planItemService.getSourceValue(params); -- Gitblit v1.9.3