数据脱敏工具advance-tool-datamask

1 简介

对于什么是数据脱敏,以下解释来自百度百科

数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。

在大数据环境下隐私保护的需求越来越频繁的被提及,对于一些敏感的信息,市面上很多应用都有一些脱敏的处理。例如百度的个人中心对账号的脱敏:
在这里插入图片描述
实现思路:在数据转json字符串的过程中,使用自定义序列化工具,解析Java Bean上标注为敏感信息的属性,将其按照规则进行脱敏,最终返回给前端的就是脱敏后的数据。

2 引入依赖

<dependency><groupId>com.github.f-sunrise-qgroupId><artifactId>advance-tool-datamaskartifactId><version>1.0.1-RELEASEversion>
dependency>

3 前后端数据脱敏

3.1 使用注解定义带敏感信息的响应实体

使用注解@SensitiveInfo来自己标注哪些属性是敏感的,默认是全部隐藏,可设置mode来选择隐藏中间部分,MaskModeEnum.MID表示隐藏中间1/3。

@Data
public class SensitiveResponseDto {@SensitiveInfo(mode = MaskModeEnum.MID)private String userName;@SensitiveInfoprivate String password;@SensitiveInfo(mode = MaskModeEnum.MID)private String phone;
}

定义测试接口

@GetMapping("/test")
public SensitiveResponseDto test(){SensitiveResponseDto responseDto = new SensitiveResponseDto();responseDto.setUserName("admin");responseDto.setPassword("123456");responseDto.setPhone("12345678910");return responseDto;
}

调用测试接口的结果:
在这里插入图片描述

3.2 自定义handler

当默认的全部脱敏和中间1/3脱敏不能满足要求时,支持自定义脱敏规则。例如定义对IP地址隐藏中间两个数字的规则:

public class CustomDataMaskHandler implements IDataMaskHandler {/*** 自定义规则:如果data为IP,则隐藏中间两个数字** @param data* @return*/public String mask(String data) {if(ObjectUtils.isNotEmpty(data) && DataMaskConstant.IP_PATTERN.matcher(data).find()){String[] numbers = data.split("\\.");return numbers[0] +".*.*." + numbers[3];}return data;}
}

SensitiveResponseDto中增加clientIp,并设置handler为CustomDataMaskHandler.class

@Data
public class SensitiveResponseDto {@SensitiveInfo(mode = MaskModeEnum.MID)private String userName;@SensitiveInfoprivate String password;@SensitiveInfo(mode = MaskModeEnum.MID)private String phone;@SensitiveInfo(handler = CustomDataMaskHandler.class)private String clientIp;
}

修改测试接口

@GetMapping("/test")
public SensitiveResponseDto test(){SensitiveResponseDto responseDto = new SensitiveResponseDto();responseDto.setUserName("admin");responseDto.setPassword("123456");responseDto.setPhone("12345678910");responseDto.setClientIp("127.0.0.1");return responseDto;
}

再次调用测试接口
在这里插入图片描述

3.3 关闭脱敏功能

在application.properties中增加配置
advance.tool.datamask.close=true
再次调用测试接口,数据正常返回。
在这里插入图片描述

4 日志脱敏

若是希望打印日志对敏感数据也脱敏,也可使用这个工具。logback.xml中增加配置

<conversionRule conversionWord="msg" converterClass="com.advance.sunrise.tool.datamask.log.SensitiveInfoConverter"> conversionRule>

在这里插入图片描述
测试接口中打印日志:
在这里插入图片描述
源码地址:https://github.com/f-sunrise-q/baseCore/tree/master/advance-parent/advance-tools


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部