From 374259f7b5d6b0c5aceec86109534b24ffc3442b Mon Sep 17 00:00:00 2001 From: loser <1500162516@qq.com> Date: Sat, 18 May 2024 21:40:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E9=93=BE=E6=8E=A5=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=84=B1=E6=95=8F=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anwen/mongo/toolkit/IPAddressUtil.java | 52 +++++++++++++++++++ .../com/anwen/mongo/toolkit/UrlJoint.java | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/IPAddressUtil.java diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/IPAddressUtil.java b/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/IPAddressUtil.java new file mode 100644 index 0000000..d21af9c --- /dev/null +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/IPAddressUtil.java @@ -0,0 +1,52 @@ +package com.anwen.mongo.toolkit; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class IPAddressUtil { + + // 定义正则表达式 + private static final String MONGODB_URI_REGEX = "mongodb://([^:]+):([^@]+)@"; + private static final String IP_PORT_REGEX = "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):(\\d{2})(\\d{1,3})"; + + /** + * 将输入字符串中的IP地址的第二段和第三段以及端口号的前两位替换为星号 + * + * @param input 包含IP地址和端口号的字符串 + * @return 替换后的字符串 + */ + public static String maskSensitiveInfo(String input) { + try { + // 隐藏账号和密码 + Pattern uriPattern = Pattern.compile(MONGODB_URI_REGEX); + Matcher uriMatcher = uriPattern.matcher(input); + StringBuffer uriSb = new StringBuffer(); + + while (uriMatcher.find()) { + // 替换账号和密码为*** + String replacement = "mongodb://***:***@"; + uriMatcher.appendReplacement(uriSb, replacement); + } + uriMatcher.appendTail(uriSb); + + // 隐藏IP和端口信息 + String intermediateResult = uriSb.toString(); + Pattern ipPortPattern = Pattern.compile(IP_PORT_REGEX); + Matcher ipPortMatcher = ipPortPattern.matcher(intermediateResult); + StringBuffer ipPortSb = new StringBuffer(); + + while (ipPortMatcher.find()) { + // 替换匹配的IP地址的第二段和第三段为* + // 替换端口号的前两位为* + String replacement = ipPortMatcher.group(1) + ".*.*." + ipPortMatcher.group(4) + ":**" + ipPortMatcher.group(6); + ipPortMatcher.appendReplacement(ipPortSb, replacement); + } + ipPortMatcher.appendTail(ipPortSb); + + return ipPortSb.toString(); + } catch (Exception e) { + return input; + } + } + +} diff --git a/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/UrlJoint.java b/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/UrlJoint.java index 54fbbef..a57fe15 100644 --- a/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/UrlJoint.java +++ b/mongo-plus-core/src/main/java/com/anwen/mongo/toolkit/UrlJoint.java @@ -165,7 +165,7 @@ public class UrlJoint { if (!mongodbUrl.contains("?")){ mongodbUrl = mongodbUrl.replaceFirst("&", "?"); } - log.info(String.format("get connected:%s",mongodbUrl)); + log.info(String.format("get connected:%s",IPAddressUtil.maskSensitiveInfo(mongodbUrl))); return mongodbUrl; } -- Gitee