在软件开发过程中,经常会遇到将用户的敏感信息如手机号码、身份证号等不慎打印在日志中的情况。为了保护用户数据隐私,又不影响日志的正常打印,我们需要对日志中的敏感信息进行脱敏处理。
为了解决这一问题,我们介绍了一款名为SensitiveUtils的敏感信息脱敏工具。该工具能够对日志中的敏感信息进行有效脱敏,保护用户隐私。
如果对工具的使用方法还不太清楚,建议先拉取项目代码,并执行其中的
SensitiveUtils#main
方法,以便更好地理解。
特性
- 支持多层级的Json/对象字段脱敏
- 支持一次性对多个字段进行脱敏处理
- 支持对连续数组层次以外的字段脱敏
使用方法
-
输入为字符串/对象及单个Json路径
// 传入对象 User user = new User(); user.setName("小明"); user.setPhone("13455556666"); String strResult4 = SensitiveUtils.desMobilePhone(user, "phone"); System.out.println(strResult4); // {"phone":"134****6666","name":"小明"} // 传入json字符串 String str1 = "{\"name\":\"小明\",\"phone\":\"13455556666\"}"; String strResult5 = SensitiveUtils.desMobilePhone(str1, "phone"); System.out.println(strResult5); // {"phone":"134****6666","name":"小明"}
-
输入为字符串/对象及多个Json路径
如果要对所有手机号进行脱敏,路径应包括:
phone
,parent#phone
String str8 = "[{\"name\":\"小刘\",\"phone\":\"13522222222\",\"parent\":[{\"name\":\"老刘\",\"phone\":\"13533333333\"}]},{\"name\":\"小王\",\"phone\":\"13500000000\",\"parent\":[{\"name\":\"老王\",\"phone\":\"13511111111\"},{\"name\":\"老张\",\"phone\":\"13555555555\"}]}]"; String strResult8 = SensitiveUtils.desMobilePhone(str8, new HashSet<>(Arrays.asList("phone", "parent#phone"))); System.out.println(strResult8); // [{"parent":[{"phone":"135****3333","name":"老刘"}],"phone":"135****2222","name":"小刘"},{"parent":[{"phone":"135****1111","name":"老王"},{"phone":"135****5555","name":"老张"}],"phone":"135****0000","name":"小王"}]
如果要对所有手机号进行脱敏,路径应包括:
phone
,parent#phone
String str9 = "{\"name\":\"小王\",\"phone\":\"13500000000\",\"parent\":{\"name\":\"老王\",\"phone\":\"13511111111\"}}"; String strResult9 = SensitiveUtils.desMobilePhone(str9, new HashSet<>(Arrays.asList("phone", "parent#phone"))); System.out.println(strResult9);
已知缺陷
-
暂不支持连续俩层数组结构的JSON字符串/对象
-
暂不支持对String以外类型的脱敏处理
-
暂不支持对字符串中的【对象JSON字符串】进行脱敏处理
{ "info": "{\"data\":\"{\\\"phone\\\":\\\"13444444444\\\"}\"}" }
未来优化方向
- 增加更多脱敏类型,如身份证号码
- 支持一个对象/Json字符串多种脱敏类型,例如:一个字符串同时脱敏手机号、身份证号
- 连续数组脱敏(待定)
- 支持非String类型字段脱敏(待定)
- 字符串中【对象JSON字符串】脱敏(待定)
Github地址
https://github.com/handsometaoa/SensitiveUtils