【问题标题】:Springboot-Logback: Mask SSN last four DigitsSpringboot-Logback:屏蔽 SSN 后四位
【发布时间】:2020-08-09 18:43:08
【问题描述】:

我正在尝试使用 Logback.xml 在我的 Spring 启动应用程序中屏蔽 SSN 和信用卡等敏感信息。我在网上搜索了各种链接,但找不到好的解决方案。有没有简单的方法或任何库来掩盖日志中的敏感信息?

输入

{"firstName":"John","lastName":"Doe","SSN":123456789}

输出:

  {"firstName":"John","lastName":"Doe","SSN":12345****}

并在堆栈溢出时发现此问题,但无法找出正则表达式。任何帮助将不胜感激

Mask sensitive data in logs with logback

【问题讨论】:

标签: java spring spring-boot logback


【解决方案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****

你可以弄乱正则表达式here

【讨论】:

  • 如何在不提供数字的情况下屏蔽整个 SSN 甚至 FirstName=*********?
  • 如果您只想屏蔽字符串中的所有内容,只需执行str.ReplaceAll(".*", "************")。正则表达式 . 匹配除换行符以外的任何内容,* 匹配它 0 次或更多次。因此,它将用任意数量的星号替换您传入的任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多