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) + ".*"; }