From b3834e3215bab54233bf62442a5a7e89404c1219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Sun, 27 Apr 2025 15:07:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(common-sensitive):=20=E6=96=B0=E5=A2=9EURL?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=84=B1=E6=95=8F=E5=8A=9F=E8=83=BD=E5=8F=8A?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E7=B1=BB=E5=9E=8B(ai-dev)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 在DesensitizedUtils工具类中新增url()方法,实现URL参数脱敏功能 2. 在SensitiveTypeEnum枚举中新增QUERY_PARAM类型,关联新增的脱敏方法 3. 方法会将URL参数值统一替换为***以保护敏感信息 --- .../sensitive/core/SensitiveTypeEnum.java | 6 ++++- .../sensitive/util/DesensitizedUtils.java | 25 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/pigx-common/pigx-common-sensitive/src/main/java/com/pig4cloud/pigx/common/sensitive/core/SensitiveTypeEnum.java b/pigx-common/pigx-common-sensitive/src/main/java/com/pig4cloud/pigx/common/sensitive/core/SensitiveTypeEnum.java index 4b0b3b0d6..bd464623b 100644 --- a/pigx-common/pigx-common-sensitive/src/main/java/com/pig4cloud/pigx/common/sensitive/core/SensitiveTypeEnum.java +++ b/pigx-common/pigx-common-sensitive/src/main/java/com/pig4cloud/pigx/common/sensitive/core/SensitiveTypeEnum.java @@ -80,8 +80,12 @@ public enum SensitiveTypeEnum { /** * 中国大陆车牌,包含普通车辆、新能源车辆 */ - CAR_LICENSE((sensitive, input) -> DesensitizedUtil.carLicense(input)); + CAR_LICENSE((sensitive, input) -> DesensitizedUtil.carLicense(input)), + /** + * 请求参数脱敏 + */ + QUERY_PARAM((sensitive, input) -> DesensitizedUtils.url(input)); /** * 获取脱敏策略 diff --git a/pigx-common/pigx-common-sensitive/src/main/java/com/pig4cloud/pigx/common/sensitive/util/DesensitizedUtils.java b/pigx-common/pigx-common-sensitive/src/main/java/com/pig4cloud/pigx/common/sensitive/util/DesensitizedUtils.java index 89f5d2a9f..83623c201 100644 --- a/pigx-common/pigx-common-sensitive/src/main/java/com/pig4cloud/pigx/common/sensitive/util/DesensitizedUtils.java +++ b/pigx-common/pigx-common-sensitive/src/main/java/com/pig4cloud/pigx/common/sensitive/util/DesensitizedUtils.java @@ -17,10 +17,15 @@ package com.pig4cloud.pigx.common.sensitive.util; +import cn.hutool.core.net.url.UrlBuilder; +import cn.hutool.core.net.url.UrlQuery; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import java.nio.charset.StandardCharsets; +import java.util.Map; + /** * 脱敏工具类 * @@ -202,6 +207,26 @@ public class DesensitizedUtils { return jsonObject.toStringPretty(); } + /** + * url 参数脱敏 + * + * @param url url + * @return url?xxxx=***&xxxx=*** + */ + public static String url(String url) { + UrlBuilder builder = UrlBuilder.of(url, StandardCharsets.UTF_8); + UrlQuery originalQuery = builder.getQuery(); + UrlQuery maskedQuery = new UrlQuery(); + + // 遍历原始参数,构造新的脱敏参数 + for (Map.Entry entry : originalQuery.getQueryMap().entrySet()) { + maskedQuery.add(entry.getKey(), "***"); + } + + // 构造新的 URL + return builder.setQuery(maskedQuery).build(); + } + public static String ipv4(String origin) { return StrUtil.subBefore(origin, '.', true) + ".*"; }