英文:
Springboot-Logback: Mask SSN last four Digits
问题
我正在尝试在我的Spring Boot应用程序中使用Logback.xml来屏蔽敏感信息,如社保号和信用卡信息。我在网上搜索了各种链接,但找不到好的解决方案。是否有一种简单的方法或任何库可以在日志中屏蔽敏感信息?
输入
{"firstName":"John","lastName":"Doe","SSN":123456789}
输出:
{"firstName":"John","lastName":"Doe","SSN":12345****}
并在Stack Overflow上找到了这个问题,但难以理解正则表达式。任何帮助将不胜感激。
https://stackoverflow.com/questions/25277930/mask-sensitive-data-in-logs-with-logback
英文:
I am trying to mask sensitive information like SSN and Credit card in my Spring boot application using Logback.xml. I searched various links in web, but could not find good solution.Is there a simple-way or any library to mask the sensitive information in logs?
Input
{"firstName":"John","lastName":"Doe","SSN":123456789}
output:
{"firstName":"John","lastName":"Doe","SSN":12345****}
And found this on stack overflow but trouble figuring out regex.Any help would be greatly appreciated
https://stackoverflow.com/questions/25277930/mask-sensitive-data-in-logs-with-logback
答案1
得分: 1
你可以尝试使用 String.ReplaceAll(String regex, String replacement)
。正则表达式应该只匹配 SSN 的前5位数字,保留它们并替换其他内容。由于我们知道每个 SSN 只有9位数字,所以可以这样捕获前5位:
String rgx = "([0-9]{5})[0-9]*";
我们将前5位数字捕获到一个组中,然后可以在 ReplaceAll()
中使用 $1
引用该组。我们不关心后面有多少位数字,所以只需使用 [0-9]*
来匹配剩余部分。在我们使用 $1
引用了前5位数字后,只需用 ****
替换其他内容。
结果:
String baseSSN = "123456789";
String rgx = "([0-9]{5})[0-9]*";
String modifiedSSN = baseSSN.ReplaceAll(rgx, "$1****"); //modifiedSSN = 12345****
你可以在 这里 尝试修改正则表达式。
英文:
You could try using String.ReplaceAll(String regex, String replacement)
. The regex would want to just match the first 5 digits of the SSN, keep them, and replace everything else. Since we know that every SSN is only 9 digits, just capture the first 5 like so:
String rgx = "([0-9]{5})[0-9]*";
We capture the first 5 in a group, we can then reference that group in ReplaceAll()
with $1
. We don't care how many digits are after it, so just use [0-9]*
to match the rest. After we reference the first 5 digits with $1
, just replace everything else with ****
.
The result:
String baseSSN = "123456789";
String rgx = "([0-9]{5})[0-9]*";
String modifiedSSN = baseSSN.ReplaceAll(rgx, "$1****"); //modifiedSSN = 12345****
You can mess with the regex here.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论